0

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

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

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

4

1 回答 1

1

如果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
于 2017-03-08T16:32:23.337 回答