如果你在没有任何缓存的情况下使用 .forceCache() 会发生什么?

What happens if you use .forceCache() if there's nothing cached yet?

从 1.6.0 版开始,强制驱动程序引用本地缓存内容的选项成为一个选项。我想知道如果还没有缓存会发生什么?

我问是因为我有一个依赖于此的项目,如果他们是 运行 这是第一次并且没有缓存任何内容,那么我们组织中的几个人都依赖于 .forceCache()失败还是会返回到驱动程序的远程存储库?

否则,我想我需要一个初始化方法,它会在第一时间发出并获取它们。感谢您提供任何帮助或信息。

如果使用 forceCache() 方法并且没有任何缓存,WebDriverManager 将从在线存储库下载最新版本。

不幸的是,1.6.0 版本存在错误,导致此方法 (forceCache()) 无法使用(无法正常工作)。幸运的是,这已在撰写本文时刚刚发布的 1.6.1 版中得到修复。

例如下面的测试用例:

public class ChromeTest {

  private WebDriver driver;

  @BeforeClass
  public static void setupClass() {
    ChromeDriverManager.getInstance().forceCache().setup();
  }

  @Before
  public void setupTest() {
    driver = new ChromeDriver();
  }

  @After
  public void teardown() {
    if (driver != null) {
      driver.quit();
    }
  }

  @Test
  public void test() {
    // test code here
  }

}

... 运行 第一次(并且没有缓存任何 chromedriver)将下载最新版本的 chromedriver。查看日志:

[2017-03-08 17:27:27:574] [main] INFO BrowserManager - Reading https://chromedriver.storage.googleapis.com/ to seek [chromedriver]
[2017-03-08 17:27:29:728] [main] INFO BrowserManager - Latest version of [chromedriver] is 2.27
[2017-03-08 17:27:29:730] [main] INFO Downloader - Downloading https://chromedriver.storage.googleapis.com/2.27/chromedriver_linux64.zip to /home/boni/.m2/repository/webdriver/chromedriver/linux64/2.27/chromedriver_linux64.zip
[2017-03-08 17:27:30:354] [main] INFO BrowserManager - Exporting webdriver.chrome.driver as /home/boni/.m2/repository/webdriver/chromedriver/linux64/2.27/chromedriver
Starting ChromeDriver 2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320) on port 3907
Only local connections are allowed.
Mar 08, 2017 5:27:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS

...当运行第二次进行相同的测试时,将使用缓存版本:

[2017-03-08 17:27:37:124] [main] INFO BrowserManager - Found chromedriver in cache: /home/boni/.m2/repository/webdriver/chromedriver/linux64/2.27/chromedriver 
[2017-03-08 17:27:37:125] [main] INFO BrowserManager - Exporting webdriver.chrome.driver as /home/boni/.m2/repository/webdriver/chromedriver/linux64/2.27/chromedriver
Starting ChromeDriver 2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320) on port 31776
Only local connections are allowed.
Mar 08, 2017 5:27:38 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS