按照设计,Selenium会在每次运行新测试时制作Firefox配置文件的新副本。我发现这个复制时间是一个相当大的瓶颈,特别是在运行100次测试时。 (重新复制配置文件需要5-15秒)。
有没有人知道这有什么覆盖行为?我更喜欢我的Selenium服务器只重用相同的firefox配置文件。我知道这违反了“干净地设置你的测试设备”的理念,但它是我愿意采取的捷径,因为我的测试并没有对我的firefox配置文件产生重大影响,足以危及未来的测试。
答案 0 :(得分:8)
我同意这是一个问题。很高兴每次都有一个新的Firefox进程副本,但通过重新生成Firefox配置文件来缩短启动时间有点过分。如果您在http://jira.openqa.org上打开错误报告并通过电子邮件发送到patrick@browsermob.com,我将很乐意确保我们能够获得解决方案。
PS:我已经为自己解决了这个问题。我们使用相同的Firefox配置文件,只是核对缓存和cookie数据库。但我真的应该把这个改变修改回Selenium来源。答案 1 :(得分:6)
这只是将下面的代码移到测试设置之外并进入夹具设置并保持selenium实例的全局(代码假设为NUnit)。
[TestFixtureSetUp()]
public void FixtureSetup()
{
selenium = New DefaultSelenium("localhost", 4444, "*firefox", "http://localhost/");
selenium.Start();
selenium.SetTimeout("30000");
selenium.Open("/");
}
您的测试设置应如下所示:
[SetUp()]
public void SetUpTest()
{
selenium.Open("default.aspx");
selenium.WaitForPageToLoad("30000");
}
答案 2 :(得分:1)
减少加载配置文件的时间的一个小方法是从firefox配置文件中删除较大的文件。为此,请通过运行命令firefox.exe -p来设置自己的配置文件。完成配置文件后,进入选项并关闭Web测试不需要的缓存和其他绒毛。然后将您的配置文件复制到新位置并删除不需要的sql文件。 (否则当您再次打开它时,您将恢复保留配置文件非常小的已删除文件)。当您开始硒测试时,请在新位置引用您的个人资料。在此之前,我在每次测试启动时都复制了50MB的配置文件,现在它复制了3-4MB的配置文件,启动时间几乎是即时的。
同样,这不是再次使用相同配置文件的方法,但它会减少每个配置文件的复制时间。
答案 3 :(得分:0)
使用MSTest,我能够让驱动程序只为所有测试打开一个Firefox
窗口,而不是通过初始化WebDriver
来打开和关闭每个测试的新窗口。 {1}}(和ClassInitialize
),而不是Cleanup
:
TestInitialize
答案 4 :(得分:0)
虽然这是一个老问题! Selenium服务器或RC已经过时但Selenium Webdriver仍然存在同样的问题。通过webdriver启动firefox大约需要30秒。
但正如这里所解释的,有些人解决了这个问题“在禁用未使用的网络适配器(位于控制面板\网络和Internet \网络连接中)之后
它陷入了困境:
ExtensionConnection connection = connectTo(exe.binary, profileToUse, "localhost");
https://groups.google.com/forum/#!topic/selenium-users/a2fNfF-mD_E
虽然它对我不起作用,但有人可能想要尝试一下!!
另一种方式可能是:
FirefoxProfile profile = new FirefoxProfile();
FirefoxBinary binary = new FirefoxBinary(@"path\to\firefox.exe");
FirefoxDriver driver = new FirefoxDriver(binary,profile);