2017-08-03 134 views
2

我的硒的版本是:phantomjs和硒 - webdriver的不工作

<dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>3.4.0</version> 
    </dependency>   

我想通过参数设置驾驶员的端口:--webdriver,像这样:

DesiredCapabilities sCaps = new DesiredCapabilities(); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, 
"/Users/user/phantomjs"); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent", 
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "javascriptEnabled", true); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "loadImages", true); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "cookiesEnabled", true); 

sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_CUSTOMHEADERS_PREFIX + "Accept", 
    "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_CUSTOMHEADERS_PREFIX + "Accept-Language", "en"); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_CUSTOMHEADERS_PREFIX + "Connection", "keep-alive"); 

ArrayList<String> cliArgsCap = new ArrayList<String>(); 
cliArgsCap.add("--web-security=false"); 
cliArgsCap.add("--ssl-protocol=any"); 
cliArgsCap.add("--ignore-ssl-errors=true"); 
cliArgsCap.add("--debug=true"); 
cliArgsCap.add("--webdriver=127.0.0.1:36000"); 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap); 
PhantomJSDriver d = new PhantomJSDriver(sCaps); 

,但之后我设置代码如下,控制台显示:

Exception in thread "main" org.openqa.selenium.WebDriverException: Timed out 
waiting for driver server to start. 

是不是硒能够处理参数--webdriver

+0

你能帮我理解你想通过'cliArgsCap.add(“ - webdriver = 127.0.0.1:36000”)来做什么吗?谢谢 – DebanjanB

+0

@DebanjanB我想修复GhostDriver的端口 – DaC1989

+0

那么你为什么要使用'--webdriver'选项?文档清楚地说'--webdriver启动'远程WebDriver模式'(嵌入式GhostDriver):'[[:]]'(默认'127.0.0.1:8910')'谢谢 – DebanjanB

回答

0

您必须下载phantomjs的二进制文件,然后将其传递给PhantomJSDriver。 在Maven依赖你只是用硒不phantomjs

http://phantomjs.org/download.html

现在添加System.setPropertybefore驱动程序实例

DesiredCapabilities caps = new DesiredCapabilities(); 
caps.setJavascriptEnabled(true); // not really needed: JS enabled by default 
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:/phantomjs.exe"); 
WebDriver driver = new PhantomJSDriver(caps); 

参考更多的信息下面的链接: -

http://seleniumworks.blogspot.in/2013/03/headless-browser-testing-using.html

使用下面的代码,这是一种方法来设置PhantomJSDri的端口ver: -

private void loadLightWeightDriverCustom() { 
    ArrayList<String> cliArgsCap = new ArrayList(); 
    DesiredCapabilities capabilities = new DesiredCapabilities(); 
    capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, PHANTOMJS_EXE.getAbsolutePath()); 
    cliArgsCap.add("--web-security=false"); 
    cliArgsCap.add("--ssl-protocol=any"); 
    cliArgsCap.add("--ignore-ssl-errors=true"); 
    capabilities.setCapability(
      PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap); 
    driver = new PhantomJSDriver(Configure(cliArgsCap), capabilities); 
} 

private PhantomJSDriverService Configure(ArrayList<String> cap) { 
    return new PhantomJSDriverService.Builder().usingPhantomJSExecutable(PHANTOMJS_EXE) 
      .usingPort(5555) 
      .usingCommandLineArguments(
        (cap.toArray(new String[cap.size()]))) 
      .build(); 
} 
+0

我没有粘贴我的所有代码,我有设置phantomjs的路径 – DaC1989

+0

我添加了可以正常工作的代码..尝试使用它,仍然可以工作,然后可能是您的phantomjs二进制文件太旧...下载新文件 –

+1

尝试使用cliArgsCap.add(“ --webdriver = 127.0.0.1:36000" );我的phantomjs的版本是2.1.1,Mac – DaC1989