使用WebDriver打开Firefox浏览器

时间:2017-02-07 17:39:09

标签: selenium firefox selenium-webdriver webdriver

我对Selenium和WebDriver非常陌生。

关于使用WebDriver推出Firefox浏览器的方式,我没有什么要说清楚的地方,如果我错了,请纠正我。

以下代码行每次打开Firefox网络浏览器时都会启动带有新会话ID的Firefox浏览器。

WebDriver driver = new FirefoxDriver();

我的问题是:

  • 是否有任何理由(安全/性能问题)WebDriver每次执行上面的代码时总是打开一个新的Firefox(比如新安装的Firefox没有附加组件/没有自定义)?
  • 是否意味着每次创建新的和临时的Firefox配置文件?
  • Firefox会话ID是否与Firefox配置文件相同,或者它意味着在Firefox关闭之前处于活动状态的浏览会话?

请解释一下。我很困惑。

1 个答案:

答案 0 :(得分:0)

对于Selenium 2.xx和Firefox 45.6esr(在Linux上),它是这样的:

每次启动会话时,都会在系统的临时目录中创建Firefox配置文件的新副本。如果未指定 - 例如在FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile)的构造函数中 - 将采用默认配置文件。 在任何情况下,都会复制个人资料

原因可能是 - 如果Selenium崩溃 - 它不会损害您可能用于手动浏览的配置文件。此外,在调用WebDriver.quit()时会删除临时配置文件。

因此,每个会话都有唯一的ID和唯一的临时配置文件。请注意,临时配置文件的名称不是从会话ID派生的。

我认为其他Selenium和Firefox版本甚至操作系统(至少是Windows)都是一样的。要查找,请使用以下代码段:

FirefoxDriver driver = new FirefoxDriver();
System.out.println(driver.getSessionId());

String tmpDir = System.getProperty("java.io.tmpdir");
System.out.println(tmpDir);

File dir = new File(tmpDir);
String[] files = dir.list();
for (String file : files) {
    System.out.println(file);
}

输出类似于(第一个是会话ID,最后一个是具有临时firefox配置文件的目录名称:

60bdbf4a-f4b3-4e71-a6be-9e3ad28a3b09
[...]
/tmp
[...]
anonymous8971467451928507515webdriver-profile