2017-08-03 11 views
2

Meine Selen Version funktioniert ist: --webdriver, wie folgt aus:PhantomJS und Selen - WebDriver nicht

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

ich den Fahrer Port durch das Argument setzen wollen

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

aber nachdem ich eingestellt der Code wie folgt, zeigt die Konsole:

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

Ist Selen nicht in der Lage, das Argumentzu behandeln?

+0

Können Sie mir helfen zu verstehen, was Sie durch 'cliArgsCap.add (" - webdriver = 127.0.0.1: 36000 ");'? Danke – DebanjanB

+0

@DebanjanB Ich möchte den Port von GhostDriver behoben – DaC1989

+0

Warum nehmen Sie '--webdriver' Option? Die Dokumentation sagt eindeutig '--webdriver startet im 'Remote WebDriver Modus' (eingebetteter GhostDriver): '[[::]]' (Standard '127.0.0.1:8910')' Danke – DebanjanB

Antwort

0

Sie müssen binäre Phantomjs herunterladen und dann an PhantomJSDriver übergeben. In Maven Abhängigkeiten verwenden Sie einfach nicht

http://phantomjs.org/download.html

Jetzt System.setPropertybefore Treiberinstanz

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

siehe den Link unten für weitere Informationen hinzufügen, Selen PhantomJS: -

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

verwenden Sie unter Code, der eine Möglichkeit ist, den Port für PhantomJSDri festzulegen 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

Ich habe nicht meinen ganzen Code eingefügt setze den phantomjs Pfad – DaC1989

+0

Ich habe Code hinzugefügt, der gut mit mir funktioniert .. versuche es zu benutzen und funktioniert immer noch, dann kann entweder dein phantomjs binary zu alt sein ... download das neue –

+1

versuche cliArgsCap.add zu benutzen (" --webdriver = 127.0.0.1: 36000 "); Und die Version meines Phantomjs ist 2.1.1, Mac – DaC1989