硒webdriver的作品,但SLOW(JAVA)(Selenium WebDriver works

2019-07-01 20:40发布

我使用webdriver的硒采取的网页截图。 它运行伟大。 然而,从我打在Eclipse中的截图在我的本地驱动器显示的时间运行时间为7-10秒。 大多数延迟似乎是在启动Firefox。

码:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.cnn.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\test\\screenshot.png"));

我怎样才能加速这一进程? 有没有我可以使用一个已经打开的Firefox浏览器,以节省打开一个新的方式? 这是代码以某种方式重?

详细说明:试图在CentOS盒和Win7箱都使用eclipse。 myspeedtest.net展示22Mbps的降低和1 Mbps的了。

Answer 1:

你所要求(允许WebDriver附加到一个正在运行的浏览器)一直是一个问题,现在快3年了 。 到目前为止,这个功能仍然没有被添加。 据我所知,有没有办法让Firefox加载得更快。 你可以试试虽然一些其他的技巧。

fp.setPreference("webdriver.load.strategy", "unstable")

报价从警告此页 :

有测试功能,让Firefox不等待完整页面调用。获得或之后。点击加载。 这可能会导致立即找到的突破,因此请务必使用一个隐性或显性等待太久。 这仅适用于Firefox和不是其他浏览器。

您也可以尝试加载与配置文件 ,看看有没有什么帮助的。



Answer 2:

从我在其他地方学到的东西 -

  1. 关闭自动更新您的浏览器/插件
  2. 设置你的IIS(或同等学历)的应用程序超时为零
  3. 创建基础硒夹具在测试中使用
  4. 更新到硒的最新版本
  5. 温暖你的应用程序之前测试
  6. 短期测试
  7. 预填充饼干。

参考文献:

https://sqa.stackexchange.com/questions/1988/selenium-reuse-existing-browser-session-instead-of-opening-new-windows

http://www.codeweavers.net/6-ways-to-speed-up-selenium-tests/

http://sauceio.com/index.php/2011/02/speed-up-your-selenium-tests/

希望这可以帮助!



Answer 3:

此线程显示了一个可能的解释。

总之,硒遍历所有的网卡,并调用需要很长的时间,虚拟网络名片的方法(的gethostname)。 禁用它们解决了线程OP的问题。

(就我自己来说,我无法禁止任何人,必须等到在每个测试用例的开始...)



Answer 4:

我有同样的问题在Windows和原因是有关解决localhost 。 在这种情况下,有两种方法来解决这个问题:

  • 替换127.0.0.1本地主机(所以去的URL像http://127.0.0.1 )。 然而,这与食堂network.automatic-ntlm-auth.trusted-uris使用NTLM身份验证对Web应用程序进行测试时的设置,因为它需要一个主机名,而不是IP地址

  • 改变hosts (如C:\ WINDOWS \ SYSTEM32 \ drivers \ etc下),直接解决了本地主机为127.0.0.1:

     # localhost name resolution is handled within DNS itself. 127.0.0.1 localhost # ::1 localhost 


Answer 5:

我知道这个问题已经回答了,但我希望这可以帮助有同样问题的人。

如果你需要做的是采取截图。 我建议使用Awesomium.NET。 http://awesomium.com/

在C#中,而不是Java这样做不应该是一个大难题,因为它们具有类似的语法。 它也支持C ++,如果你想运行在Linux上的应用程序。 我相信它会比webdriver的显著更快。

如果你选择C ++使用此: http://labs.awesomium.com/capturing-web-pages-with-c/

对于C#.NET: http://awesomium.com/docs/1_7_rc3/sharp_api/



Answer 6:

对我来说,与IEDriverServer的64位版本的工作,我加了属性requireWindowFocus与价值:“真”。

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);

capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);


文章来源: Selenium WebDriver works but SLOW (Java)