Java 如何阻止Selenium使用Web驱动程序创建临时Firefox配置文件?
我将SeleniumWeb驱动程序API与Java一起使用。每次我想调试测试用例时,都会在临时文件目录中创建一个Firefox的临时配置文件。这在两个方面令人头痛Java 如何阻止Selenium使用Web驱动程序创建临时Firefox配置文件?,java,selenium,firefox,webdriver,profile,Java,Selenium,Firefox,Webdriver,Profile,我将SeleniumWeb驱动程序API与Java一起使用。每次我想调试测试用例时,都会在临时文件目录中创建一个Firefox的临时配置文件。这在两个方面令人头痛 创建一个概要文件肯定需要花费不必要的时间,也占用了不必要的空间 我无法安装下一次启动测试用例时可用的任何插件 我该怎么做 您可以直接告诉Selenium使用特定的配置文件。以下是一个例子: 在我浏览了找到文档的地方之后,答案其实很简单。我找到了这个类,构造函数采用了Firefox配置文件的路径 WebDriver driver = n
我该怎么做 您可以直接告诉Selenium使用特定的配置文件。以下是一个例子:
在我浏览了找到文档的地方之后,答案其实很简单。我找到了这个类,构造函数采用了Firefox配置文件的路径
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/您喜爱的扩展。您可以控制Firefox驱动程序选择配置文件的方式。将
webdriver.firefox.profile
属性设置为要使用的配置文件的名称。大多数人认为这是一个坏主意,因为您将继承以前使用的配置文件的所有cookie、缓存内容等,但如果您真的想这样做,这是允许的
例如:
System.setProperty("webdriver.firefox.profile", "MySeleniumProfile");
WebDriver driver = new FirefoxDriver(...);
更新-来自
我是如何为Java处理它的
FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));
WebDriver driver = new FirefoxDriver(profile);
然后我更改了Firefox中的设置,以在退出时清除所有cookie和缓存。查看如何操作。您可以通过调用
FirefoxProfile
类中的addExtension(File)
方法来加载带有所需插件的FirefoxWebDriver
例如:
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);
我已通过运行以下命令创建自定义配置文件:
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);
即使您明确指定了临时文件,也无法阻止Selenium创建临时文件。但您可以在测试完成后清除它
TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()
在MacOS和Ubuntu下测试
您可以在程序开始之前为临时文件指定不同的位置,以便程序不会因“内存空间不足”而停止 一定要打电话给
driver.quit();
而不是driver.close();
close()不会删除临时文件您可以始终使用名为
default
的配置文件,该配置文件是用户默认使用的配置文件。在那里,您将拥有所有的cookie、插件等,并且您将能够使用它而不会出现任何复杂情况,使用
System.setProperty("webdriver.firefox.profile", "default");
在创建WebDriver之前
WebDriver driver = new FirefoxDriver();
要创建一些新的配置文件,您可以在shellfirefox-p
中执行,它将显示给您
并在现有的
默认配置文件之外获取新配置文件。这会给你所有你想要的自由。好问题,我也在寻找答案。这也是selenium 1的一个问题。您将对此线程进行详细解释。。。。这适用于Selenium RC。我正在使用Selenium Web驱动程序API。我花了好几个小时弄明白了为什么它不会使用指定的配置文件。。。官方文档称webdriver.firefox.profile启动firefox时要使用的配置文件名。它没有提到它仍然创建新的匿名配置文件,它只是使用指定的一个作为源。哦,好吧,谢谢你的更新,现在我知道了。然后我更改了Firefox中的设置,以在退出时清除所有cookie和缓存。
-我认为这没有必要,因为Selenium仍将创建临时配置文件。它使用您指定的配置文件作为基础,即复制设置,因此原始配置文件不应更改。这并不能解决问题1。正如前面的回答所说,无论如何都会创建一个临时配置文件,因此会占用时间和空间。@VsevolodGolovanov您找到解决方案了吗?目前我正面临这个问题。@abc,1。这只是让我感到困扰,因为当时FF自己的开发工具还不够,有时我需要Firebug。设置基本配置文件的选项足以在必要时修复此问题。2.今天FF的开发工具已经足够成熟,Firebug已经死了,所以这不再是一个问题。3.无论如何,我现在已经从FF切换到Chrome进行UI测试,因为FF切换到不完整的木偶破坏了一些东西。4.临时配置文件性能命中对我来说从来都不是问题-如果测试本身很胖,这是可以忽略的。@abc,请记录,Chrome测试目前需要5秒才能在我的开发人员PC上启动,不记得FF有多少。这应该是一个注释,而不是答案。这是如何回答这个问题的?这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,一旦有足够的评论,您就可以发表评论。@JohannesKlauß这正好回答了答案的这一部分=“占用了不必要的空间”。如果您没有正确调用driver.quit(),您将以大量Gb的虚拟配置文件数据结束。.close()也是nodejs实现的解决方案,它可以留下一个临时文件夹和5MB的文件。请注意,如果有多个窗口,则close()
与quit()
不同。
System.setProperty("webdriver.firefox.profile", "default");
WebDriver driver = new FirefoxDriver();