有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么PhantomJSDriver不使用我设置的功能?

我正在为PhantomJsDriver设置一些功能

DesiredCapabilities caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true);
caps.setCapability("cssSelectorsEnabled", false);
caps.setCapability("applicationCacheEnabled", true);
caps.setCapability("acceptSslCerts",true);
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,phantomJsPath); 
this.driver = new PhantomJSDriver(caps);

然后,我检查驱动程序使用的功能:

System.out.println(driver.getCapabilities());

输出:

Capabilities [{
platform=XP, 
acceptSslCerts=false, 
javascriptEnabled=true, 
browserName=phantomjs,
rotatable=false,
driverVersion=1.1.0, 
locationContextEnabled=false, 
version=1.9.7, 
cssSelectorsEnabled=true, 
databaseEnabled=false, 
handlesAlerts=false, 
browserConnectionEnabled=false, 
proxy={proxyType=direct}, 
nativeEvents=true, 
webStorageEnabled=false, 
driverName=ghostdriver, 
applicationCacheEnabled=false, 
takesScreenshot=true}]

它显示:

cssSelectorsEnabled=true, 
applicationCacheEnabled=false,
acceptSslCerts=false

为什么驱动程序在没有我设置的功能的情况下运行


共 (2) 个答案

  1. # 1 楼答案

    对于phantomjsdriver-1.1,我必须传递以下参数才能使其正常工作

    cliArgsCap.add(" web-security=no");
    cliArgsCap.add(" ignore-ssl-errors=yes");
    
  2. # 2 楼答案

    PhantomJS在设置功能时使用不同的机制

    static ArrayList<String> cliArgsCap = new ArrayList<String>();
    capabilities = DesiredCapabilities.phantomjs();
    cliArgsCap.add(" web-security=false");
    cliArgsCap.add(" ssl-protocol=any");
    cliArgsCap.add(" ignore-ssl-errors=true");
    capabilities.setCapability("takesScreenshot", true);
    capabilities.setCapability(
        PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);
    capabilities.setCapability(
        PhantomJSDriverService.PHANTOMJS_GHOSTDRIVER_CLI_ARGS,
            new String[] { " logLevel=2" });
    this.driver = new PhantomJSDriver(capabilities);
    

    有关其命令行的更多信息,可以参考http://phantomjs.org/api/command-line.html