如何阻止Selenium使用Web Driver创建临时Firefox配置文件?

时间:2011-07-22 07:49:58

标签: java selenium firefox webdriver profile

我正在使用Selenium Web Driver API和Java。每次我想调试我的测试用例时,都会在临时文件目录中创建Firefox的临时配置文件。这在两个方面令人头疼。

  1. 创建个人资料肯定会花费不必要的时间,并且占用了不必要的空间。
  2. 我无法安装下次启动测试用例时可用的任何插件。
  3. 我如何解决这个问题?

10 个答案:

答案 0 :(得分:31)

您可以控制Firefox驱动程序选择配置文件的方式。将webdriver.firefox.profile属性设置为要使用的配置文件的名称。大多数人认为这是一个坏主意,因为你将继承所有的cookie,缓存内容,。以前使用的配置文件,但如果你真的想这样做,它是允许的。

例如:

System.setProperty("webdriver.firefox.profile", "MySeleniumProfile");
WebDriver driver = new FirefoxDriver(...);

更新 - 来自Ranhiru

我如何处理Java

FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));                  
WebDriver driver = new FirefoxDriver(profile);

然后我更改了Firefox中的设置,以便在退出时清除所有Cookie和缓存。看看here如何做到这一点。

答案 1 :(得分:22)

请务必致电

driver.quit();

而不是

driver.close();

close()不会删除临时文件

答案 2 :(得分:3)

在我找到文档的this question后,答案实际上非常简单。我找到了FirefoxProfile类,构造函数采用了Firefox Profile的路径。

WebDriver driver = null;
FirefoxProfile profile = new FirefoxProfile(new File("C:\\Users\\Ranhiru\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\qp1nizdo.Selenium"));
driver = new FirefoxDriver(profile);

我通过使用 -p 标志运行“Firefox.exe”来创建新配置文件。

Firefox.exe -p

安装了此配置文件所需的扩展程序,我很高兴! :)

<强>更新

无论您是否分配配置文件,都会创建临时文件夹中的临时配置文件。通过创建和分配配置文件,您可以在测试时使用firebug / xpather /您最喜欢的扩展。

答案 3 :(得分:3)

您可以通过调用FirefoxWebDriver课程中的addExtension(File)方法加载带有所需插件的FirefoxProfile

示例:

try {
    File firebug = new File("C:\\FFPlugins\\firebug-1.7.3.xpi");
    File xpathChecker = new File("C:\\FFPlugins\\xpath_checker-0.4.4-fx.xpi");
    profile.addExtension(firebug);
    profile.setPreference("extensions.firebug.currentVersion", "1.7.3");
    profile.addExtension(xpathChecker);
    profile.setPreference("extensions.xpath_checker.currentVersion", "0.4.4");
} catch(IOException e) {
    e.printStackTrace();
}
driver = new FirefoxDriver(profile);

答案 4 :(得分:1)

我通过运行命令创建了自定义配置文件:

firefox -profileManager 

(然后添加我需要的任何异常 - 因为每次异常丢失时selenium打开干净的配置文件/实例)

然后我使用以下内容直接使用此配置文件创建我的Firefox:

private static String profilePath = "C:\\fitnesse\\Selenesse\\FFProfiles";
private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath); 
private static IWebDriver driver = new FirefoxDriver(ffprofile);

答案 5 :(得分:0)

即使您明确指定了文件,也无法阻止Selenium创建临时文件。但是你可以在测试完成后清除它。

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

在MacOS和Ubuntu下测试。

答案 6 :(得分:0)

  1. 启动firefox: firefox -P
  2. 创建新的个人资料(例如webdriver1),添加必要的插件等。
  3. 添加到您的测试用例:

    DesiredCapabilities desiredCapabilities =
        new DesiredCapabilities("firefox", "", Platform.ANY);
    FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1");
    desiredCapabilities.setCapability("firefox_profile", profile);
    WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);
    

答案 7 :(得分:0)

您可以始终使用名为default的配置文件,该配置文件是用户默认使用的配置文件。在那里,你将拥有所有的cookie,插件等,你可以使用

使用它而没有任何复杂情况
System.setProperty("webdriver.firefox.profile", "default");

创建WebDriver之前

WebDriver driver = new FirefoxDriver();

用于创建一些新的配置文件,您可以在shell firefox -p中执行,它将显示

Add new profile to Firefox

并获取除现有default之外的新个人资料。那会给你所有你想要的自由。

答案 8 :(得分:-1)

您可以直接告诉Selenium使用特定的个人资料。以下是一个例子: http://automationtricks.blogspot.com/2010/05/how-to-run-test-cases-in-specified.html

答案 9 :(得分:-1)

您可以在程序开始之前为临时文件指定不同的位置,这样您的程序可能会因为缺少内存空间而无法停止&#34;

if(!new File("c:/temp_data").isDirectory())  //to check dir exist

    FileUtils.forceMkdir(new File("c:/temp_data")); //create dir if not exists    
    TemporaryFilesystem.setTemporaryDirectory(new File("c:/temp_data")); //set new dir as temp file path for selenium    
    FirefoxProfile profile = new FirefoxProfile();