我正在使用Selenium Web Driver API和Java。每次我想调试我的测试用例时,都会在临时文件目录中创建Firefox的临时配置文件。这在两个方面令人头疼。
我如何解决这个问题?
答案 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)
添加到您的测试用例:
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
中执行,它将显示
并获取除现有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();