如果您使用.forceCache(),如果没有缓存的话会发生什么?

时间:2017-03-08 15:00:53

标签: webdrivermanager-java

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

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

否则,我猜我需要一个初始化方法,然后第一次获取它们。感谢您提供任何帮助或信息。

1 个答案:

答案 0 :(得分:1)

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

不幸的是,有一个bug版本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