2014-03-07 1 views
9

Ich stelle einige Fähigkeiten für PhantomJsDriver ein.Warum verwendet PhantomJSDriver nicht die von mir eingestellten Funktionen?

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); 

Dann habe ich überprüfen, welche Fähigkeiten der Fahrer unter Verwendung:

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

Ausgang:

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}] 

Es zeigt:

cssSelectorsEnabled=true, 
applicationCacheEnabled=false, 
acceptSslCerts=false 

Warum der Fahrer läuft ohne die Fähigkeiten, die ich einstelle?

+0

Ich habe das gleiche Problem. Einstellung acceptSslCerts = true funktioniert nicht – casper

Antwort

17

PhantomJS verwendet unterschiedliche Mechanismus bei der Festlegung Fähigkeiten

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); 

Weitere Informationen über die Befehlszeile Sie http://phantomjs.org/api/command-line.html

2

Mit phantomjsdriver-1.1 gebe ich musste die folgen Argumente verweisen könnte dies zu erhalten arbeiten.

+0

Wie ist das eine bessere Antwort als die andere? Was ist "cliArgsCap"? Das einzige, was in Ihrer Antwort anders ist, ist 'false'>' no' und 'true'>' yes', das in PhantomJS austauschbar ist. Dies garantiert keine neue Antwort. –

+3

Um dies zum Laufen zu bringen, musste ich phantomjsdriver-1.1 mit "no" und "yes" verwenden, mit false und true hat es nicht funktioniert. –