java - 在 Remotewebdriver 上执行 PhantomJS

标签 java selenium phantomjs remotewebdriver

如果我使用网络驱动程序,那么它可以完美运行

driver = new PhantomJSDriver(capabilities);
driver.executePhantomJS( "var page = this;");

我怎样才能让它发挥作用?

driver = new RemoteWebDriver(capabilities);
driver.executePhantomJS( "var page = this;");

更新

我的代码

capabilities = DesiredCapabilities.phantomjs();
driver = new RemoteWebDriver(capabilities);


driver.executePhantomJS( "var page = this; binary =0;mimetype=''; count = 0;id=0; bla = '{';"
                                +"page.onResourceReceived = function(request) {"
                                    + "if(id !== request.id){"
                                        +"bla += '\"'+count+ '\":'+JSON.stringify(request, undefined, 4)+',';"
                                        +"if(request.contentType.substring(0, 11) =='application'){"
                                            +"console.log(request.contentType);"
                                            + "mimetype = request.contentType;"
                                            + "binary++;"
                                        + "}"
                                        +"count++;"
                                        + "id = request.id;"
                                    + "}"                       
                                +"};");

Java 给出错误:RemoteWebDriver 类型的方法executePhantomJS(String) 未定义。

如果我使用executeScript,它将不起作用。

我需要并行运行 100 次测试,我无法使用 webdriver。

最佳答案

我猜您想在 Se Grid 上运行 PhantomJSDriver。这就是它对我的作用(C# 工厂实现):

public IWebDriver CreateWebDriver(string identifier)
    {
     if (identifier.ToLower().Contains("ghostdriver"))
        {
            return new RemoteWebDriver(new Uri(ConfigurationManager.AppSettings["Selenium.grid.Url"]), DesiredCapabilities.PhantomJS());
        }
    }

或者试试这个

   Console.WriteLine("Creating GhostDriver (PhantomJS) driver.");
   //Temporary commented for testing purposes
   IWebDriver ghostDriver = new PhantomJSDriver("..\\..\\..\\MyFramework\\Drivers");
                ghostDriver.Manage().Window.Maximize();
                //ghostDriver.Manage().Window.Size = new Size(1920, 1080);
                ghostDriver.Manage()
                    .Timeouts()
                    .SetPageLoadTimeout(new TimeSpan(0, 0, 0,
                        Convert.ToInt32(ConfigurationManager.AppSettings["Driver.page.load.time.sec"])));
                return ghostDriver;

如果您想知道为什么有 ConfigurationManager - 我避免使用硬编码值,因此它们是从 App.config 文件中提取的。

关于java - 在 Remotewebdriver 上执行 PhantomJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31670125/

相关文章:

selenium - 单击基于表列值的复选框 - IE Webdriver Selenium

javascript - 从 python 中的标签名称中抓取数据

javascript - PhantomJS/SlimerJS 无法点击 Canvas 元素

javascript - 无法通过 bash 使用 phantomjs 打开 javascript 文件

Python Selenium

javascript - Node js 和 Phantom js

java - Java 中的新日期对象是否包含当前日期?还是空的?

java - 为什么在 Struts 1.2.7 中延迟实例化 MessageResourcesFactory?

java - 将特殊变量 (~ 波形符) 传递给 Java 程序

java - 错误地覆盖包