2016-07-13 13 views
0

Ich benutze Python 2.7, Selenium und PhantomJs.Akzeptieren Sie ein Popup mit Phantomjs mit Selen

Wenn ich auf die Anmeldeschaltfläche in meinem Skript klicke, geht es auf eine neue Seite und ein Popup erscheint, das ich akzeptieren muss.

Hier ist der Code, den ich versuche zu verwenden. Ich habe es von hier How can I handle an alert with GhostDriver via Python?

sign_in.click() 
js = 'window.alert = function(message) { lastAlert = message; }' 
driver.execute_script("%s" % js) 
driver.execute_script("return lastAlert") 

Hier ist der Fehler, die ich bekomme:

raise exception_class (Meldung, Bildschirm, stacktrace) selenium.common.exceptions.WebDriverException: Nachricht: { "errorMessage": "Variable kann nicht gefunden werden: lastAlert", "request": {"hea ders": {"Übernehmen": "application/json", "Accept-Encoding": "identity", "Verbindung": "close", "Content-Length": "95", "Inhaltstyp ": "application/json; charset = UTF-8", "Host": "127.0.0.1:56712","User-Agent" : "Python-urllib/2.7"}, "httpVersion": "1.1", "METHO d": "POST", "Post": "{" SessionID "": "3832e2c0-4902-11e6-b766- 0d7f487d0794 \ ", \" args \ ": [], \" script \ ": \" return lastAlert \ "}", "url": "/ execute", "urlParsed": {"anchor": "" , "query": "", "file": "Ausführen", "Verzeichnis": "/", "Pfad": "/ execute", "relativ": "/ execute", "port": "", "host": "", "password": "", "user": "", "userInfo": "", "berechtigung": "", "protocol": "", "source": "/ execute" , "q ueryKey": {}, "chunks": ["ausführen"]}, "urlOriginal": "/ session/3832e2c0-4902-11e6-b766-0d7f487d0794/ausführen"}} Screenshot: über Bildschirm verfügbar

Ich bin nicht sehr erfahren mit Javascript ein d ein Punkt in die richtige Richtung wäre nützlich. Hier

Antwort

0

ist der Behat Schritt, den ich bin mit:

/** 
    * This step overrides windows.confirm and basically accepts it before it is displayed. 
    * 
    * @When /^(?:|I)bypass the popup$/ 
    */ 
    public function bypassPopup() { 
    $function = " 
    var realConfirm=window.confirm; 
    window.confirm=function(){ 
    window.confirm=realConfirm; 
    return true; 
}; 
    "; 
    $session = $this->getSession(); 
    $session->executeScript($function); 
    } 

Sie es platzieren, bevor Sie auf die Schaltfläche klicken und wenn Sie auf Ihr Popup automatisch akzeptiert. In diesem Fall wird nur das erste Popup akzeptiert.

Verwandte Themen