2017-02-07 138 views
1

我对Selenium和WebDriver非常陌生。使用WebDriver打开Firefox浏览器

对于使用WebDriver启动Firefox浏览器的方式,我有几点需要澄清,请纠正我在哪里出错。

每当打开Firefox网页浏览器时,以下代码行会以新会话标识启动Firefox浏览器。

WebDriver driver = new FirefoxDriver();

我的问题是:

  • 没有任何理由(安全/性能问题)是webdriver的总是打开一个新的Firefox(如新安装的Firefox浏览器无加载项/无定制)每次上面的代码执行?
  • 是否意味着每次创建新的和临时的Firefox配置文件?
  • Firefox会话标识与Firefox配置文件是一样的,还是意味着在Firefox关闭之前处于活动状态的浏览会话?

请解释一下。我很困惑。

+1

我觉得细节取决于您使用的Selenium/WebDriver版本。根据我的经验(使用Seleinum 1和2),它是这样的:每次启动会话时,都会创建一个新的Firefox配置文件副本(默认配置文件,如果未指定)您的系统的临时目录,原因可能是 - 如果Selenium崩溃 - 它不会损害您可能用于手动浏览的配置文件。您是什么意思_Firefox se ssion id_?它出现在哪里? –

+0

我从这里获得了_session id_:[link](http://stackoverflow.com/q/36476111/7529915)。这是_Firefox会话ID_? – dheer

回答

0

至于硒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 
相关问题