2016-03-08 7 views
7

Im derzeit eine Abnahmeprüfung mit den folgenden Tools zu machen:PhantomJS nicht besuchen selbst signierten HTTPS-Seiten Codeception

  • Codeception
  • Selen WebDriver
  • PhantomJS (wie kopflos Browser Geist)

Mein Problem ist Meine Tests scheitern beim Besuch einer selbst-signierten (https) Seite

Was ich versucht habe:

  1. phantomjs --webdriver=5555 --ignore-ssl-errors=true --ssl-protocol=any
  2. Addiert man diese in Fähigkeiten phantomjs.cli.args: ["--ignore-ssl-errors=true"] in meinem acceptance.suit.yml

Bisher diese Optionen geben tut mir kein Glück.

Hier ist meine acceptance.suit.yml Datei

class_name: AcceptanceTester 
modules: 
    enabled: 
     - WebDriver 
    config: 
     WebDriver: 
      url: https://myproject.com 
      browser: firefox 
      capabilities: 
       unexpectedAlertBehaviour: 'accept' 

env: 
    phantom: 
     modules: 
      enabled: 
       - WebDriver 
      config: 
       WebDriver: 
        url: https://myproject.com 
        http_proxy: 192.1.1.1 
        http_proxy_port: 3000 
        browser: phantomjs 
        capabilities: 
         phantomjs.cli.args: ["--ignore-ssl-errors=true"] 

UPDATE

Dieser Fehler nach oben zeigt [ModuleException] WebDriver: Current url is blank, no page was opened

Ich weiß nicht, warum dieser Fehler passiert, da ich eine Seite angegeben haben. Hier ist ein Beispiel meines Tests

public function tryToTestThis(AcceptanceTester $I) 
{ 
    $I->wantTo('Test this function'); 
    $I->amOnPage('/mypage/'); 
    $I->see('This text'); 
} 

Eine Antwort in Codeception wäre vorzuziehen. Danke

+0

Könnten Sie bitte mehr auf auszuarbeiten, was geschieht? Irgendwelche Fehler, wie schlägt der Test fehl? Vielen Dank. – alecxe

+0

@alecxe Hallo Ich habe meinen Beitrag aktualisiert.Es sagt '[ModuleException] WebDriver: Aktuelle URL ist leer, keine Seite wurde geöffnet. –

+0

Ich war in der Lage, Ihren Fehler zu replizieren und phantomjs mit --ignore-ssl-errors = true zu starten, damit mein Test bestanden wird. Der einzige Unterschied ist, dass ich nicht http_proxy und http_proxy_port verwende, hast du deinen Proxy überprüft? – MajicBob

Antwort

1

Wir fanden die Ursache, wenn dieses Problem. Es war, weil ich Selenium und phantomJS zur gleichen Zeit laufen ließ. (Ich habe diese Idee von einem Tutorial.)

I

java -jar selenium.jar 

tat, dann mache ich das, da es einen Fehler verursacht PhantomJS am Port 4444 läuft (Offensichtlich Selen ist es mit) Ich benutze Port 5555 statt .

Hinweis: Alles funktioniert gut, wenn nicht mit https/ssl selbst signierten Seiten beteiligt.

Wir denken, dass codeception Port 4444 priorisieren und jede Option ignorieren, die in meinem Phantomjs angezeigt wird, d. H. --ignore-ssl-errors=true --ssl-protocol=any das ist warum in besucht, https/selbstsignierte Seiten nicht.

Also im Grunde war der Fix nur Phantomjs allein ohne Selen laufen.

phantomjs --webdriver=4444 --ignore-ssl-errors=true --ssl-protocol=any 

Danke