如何配置PhantomJSDriver尽可能接近我的Google Chrome浏览器?

刘易斯

以下是我的开发环境的详细信息:

-Visual Studio 2012 Ultimate更新4

-谷歌浏览器版本40.0.2214.94 m

-具有32位操作系统的Windows 7 Professional

我的Google Chrome浏览器的用户代理字符串是:

Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 40.0.2214.94 Safari / 537.36

我的自动UI测试代码中的C#代码如下:

var options = new PhantomJSOptions();

// Chrome User Agent ( Chrome Version 40.0.2214.94 m ) 
options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36");

driver = new OpenQA.Selenium.PhantomJS.PhantomJSDriver(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\packages\PhantomJS.1.9.8\tools\phantomjs"), options);

url = new Uri("http://localhost:2816/");

IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(90.00));

wait.Until(ExpectedConditions.ElementIsClickable( By.XPath("//a[text()='Users']")));

IWebElement btn = waitArg.Until<IWebElement>((d) => {
 try{ 
 return d.FindElement( By.XPath("//a[text()='Users']") );
 }
 catch {

        return null;
    }  
  });

  btn.Click();

不幸的是,上面的代码很难找到元素。我相信,如果我可以配置代码中使用的PhantomJS驱动程序,以更紧密地模拟桌面上的Google Chrome版本40.0.2214.94 m浏览器,那么只要有时间,自动UI测试代码就应该能够提供更一致,更准确的测试结果测试运行。

有人可以建议我是否可以对以下代码进行一些修改,使其更接近于我的Google Chrome版本40.0.2214.94 m浏览器?

var options = new PhantomJSOptions();

// Chrome User Agent ( Chrome Version 40.0.2214.94 m ) 
 options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36");

 driver = new OpenQA.Selenium.PhantomJS.PhantomJSDriver(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\packages\PhantomJS.1.9.8\tools\phantomjs"), options);

在@ artjom-b的帮助下更新答案

        var options = new PhantomJSOptions();

        options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36");


        var service = PhantomJSDriverService.CreateDefaultService(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\packages\PhantomJS.1.9.8\tools\phantomjs"));

        service.SslProtocol = "any";
        driver = new PhantomJSDriver(service, options);
        url = new Uri("http://localhost:2816/");

        // 1280, height: 1024
        // @artjom-b strongly recommened that the Driver's Window Size be quite large.  Let's set the Window Size to quite large. 
        driver.Manage().Window.Size = new System.Drawing.Size(1280, 1024); // Size is a type in assembly "System.Drawing"
Artjom B.

PhantomJS是一个独立的(无头)浏览器。您无法对其进行配置,因此其行为类似于Chrome。对于渲染引擎,根本没有什么可配置的。您可以做一些事情,以便PhantomJS的行为类似于桌面浏览器。

首先是将视口大小设置为较大。PhantomJS在默认情况下以400x300的视口运行。视口可扩展为固定宽度的站点,但对于响应站点则保持较小。根据网站的编写方式,某些元素可能会隐藏并且无法单击。
请参阅:在Shannium驱动的PhantomJS C#中设置屏幕大小

第二件事是将用户代理字符串设置为最接近其功能的字符串。PhantomJS 1.x基于QtWebKit的旧版本。据说Chrome 13与它最兼容。
为什么这有关系?一些网站在遇到新的用户代理时会使用一些“实验性” JavaScript。使用旧的/匹配的用户代理字符串,以使执行此操作的网站不会发送时髦的JavaScript或PhantomJS无法理解的其他奇怪内容。谷歌确实做到了这一点。
用户代理字符串:

Mozilla / 5.0(Windows NT 6.0)AppleWebKit / 535.1(KHTML,like Gecko)Chrome / 13.0.782.41 Safari / 535.1

PhantomJS 1.x默认使用SSLv3,并且如果服务器不支持SSLv3(由于POODLE漏洞),则连接失败。使用anyPhantomJS可以接受它理解的所有SSL / TLS连接。
请参阅:答:Selenium Webdriver + PhantomJS对于特定站点仍然处于about:blank

PhantomJS 1.x不支持Function.prototype.bind其他功能。C#的硒语言绑定支持执行PhantomJS脚本代码段(而非页面脚本),通过PhantomJSDriver.ExecutePhantomJS()该代码段,可以运行垫片以对PhantomJS进行一些必要的功能改造。注释中提供的相关提交

您无法真正做到以下几点:

  • 点击下载链接不会下载任何内容。PhantomJS不会触发下载(使用XHR进行手动下载的最长持续时间为30秒)。
  • PDF无法打开。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Chrome浏览器代理设置?

来自分类Dev

Google Chrome浏览器运行缓慢

来自分类Dev

Google Chrome浏览器代理设置?

来自分类Dev

下载Google Chrome浏览器(armhf?)

来自分类Dev

Google Chrome浏览器的字体问题

来自分类Dev

Google Chrome浏览器首页37

来自分类Dev

Google Chrome浏览器不断崩溃

来自分类Dev

Google Chrome浏览器崩溃

来自分类Dev

Google Chrome浏览器行为异常

来自分类Dev

下载Google Chrome浏览器(armhf?)

来自分类Dev

如何从Java启动Chrome浏览器

来自分类Dev

如何使Chrome浏览器更像Firefox?

来自分类Dev

Google Chrome浏览器扩展程序,可重新启动Google Chrome浏览器

来自分类Dev

如何防止Google Chrome浏览器绕过默认浏览器设置?

来自分类Dev

关闭浏览器窗口后,如何防止Google Chrome浏览器删除会话Cookie?

来自分类Dev

如何使用Chrome浏览器API更改chrome:// flags?

来自分类Dev

无法将Google Chrome浏览器设置为默认浏览器

来自分类Dev

无法将Google Chrome浏览器设置为默认浏览器

来自分类Dev

阻止网站在Google Chrome浏览器中使用浏览器热键

来自分类Dev

仅在浏览器不是Google Chrome浏览器时显示消息

来自分类Dev

如何在Chrome浏览器和firefox浏览器中验证日期

来自分类Dev

如何指示Chrome浏览器下载PDF而不是在浏览器中预览(预览)?

来自分类Dev

Chrome浏览器不记得我的Google帐户会话

来自分类Dev

如何正确设置Google Chrome浏览器工作区

来自分类Dev

如何删除Google Chrome浏览器Cookie

来自分类Dev

如何清除Google Chrome浏览器地址栏?

来自分类Dev

如何让Chromium使用Google Chrome浏览器中的Flash?

来自分类Dev

如何停止累积的Google Chrome浏览器后台进程?

来自分类Dev

如何在Google Chrome浏览器中运行Postman

Related 相关文章

  1. 1

    Google Chrome浏览器代理设置?

  2. 2

    Google Chrome浏览器运行缓慢

  3. 3

    Google Chrome浏览器代理设置?

  4. 4

    下载Google Chrome浏览器(armhf?)

  5. 5

    Google Chrome浏览器的字体问题

  6. 6

    Google Chrome浏览器首页37

  7. 7

    Google Chrome浏览器不断崩溃

  8. 8

    Google Chrome浏览器崩溃

  9. 9

    Google Chrome浏览器行为异常

  10. 10

    下载Google Chrome浏览器(armhf?)

  11. 11

    如何从Java启动Chrome浏览器

  12. 12

    如何使Chrome浏览器更像Firefox?

  13. 13

    Google Chrome浏览器扩展程序,可重新启动Google Chrome浏览器

  14. 14

    如何防止Google Chrome浏览器绕过默认浏览器设置?

  15. 15

    关闭浏览器窗口后,如何防止Google Chrome浏览器删除会话Cookie?

  16. 16

    如何使用Chrome浏览器API更改chrome:// flags?

  17. 17

    无法将Google Chrome浏览器设置为默认浏览器

  18. 18

    无法将Google Chrome浏览器设置为默认浏览器

  19. 19

    阻止网站在Google Chrome浏览器中使用浏览器热键

  20. 20

    仅在浏览器不是Google Chrome浏览器时显示消息

  21. 21

    如何在Chrome浏览器和firefox浏览器中验证日期

  22. 22

    如何指示Chrome浏览器下载PDF而不是在浏览器中预览(预览)?

  23. 23

    Chrome浏览器不记得我的Google帐户会话

  24. 24

    如何正确设置Google Chrome浏览器工作区

  25. 25

    如何删除Google Chrome浏览器Cookie

  26. 26

    如何清除Google Chrome浏览器地址栏?

  27. 27

    如何让Chromium使用Google Chrome浏览器中的Flash?

  28. 28

    如何停止累积的Google Chrome浏览器后台进程?

  29. 29

    如何在Google Chrome浏览器中运行Postman

热门标签

归档