2016-07-13 7 views
0

Я использую python 2.7, Selenium и PhantomJs.Принять всплывающее окно с использованием Phantomjs with Selenium

Когда я нажимаю кнопку входа в свой скрипт, она переходит на новую страницу, и появляется всплывающее окно, которое я должен принять.

Вот код, который я пытаюсь использовать. Я получил его отсюда 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") 

Здесь ошибка, что я получаю:

повышение exception_class (сообщение, экран, StackTrace) selenium.common.exceptions.WebDriverException: Сообщение: { «errorMessage»: «Невозможно найти переменную: lastAlert», «request»: {«hea ders»: {«Accept»: «application/json», «Accept-Encoding»: «identity», «Connection»: "close", "Content-Length": "95", "Content-Type ": "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": "execute", "directory": "/", "path": "/ execute", "relative": "/ execute", "port": "", "хозяин": "", "пароль": "", "пользователь": "", "USERINFO протокол "", "":": ", "власть"": "", "источник": "/ выполнить" , "q ueryKey": {}, "chunks": ["execute"]}, "urlOriginal": "/ session/3832e2c0-4902-11e6-b766-0d7f487d0794/execute"}} Снимок экрана: доступен через экран

Я не очень опытен с javascript a d была бы полезной точка в правильном направлении.

ответ

0

Вот шаг Behat, что я использую:

/** 
    * 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); 
    } 

Вы поместите его, прежде чем нажать на кнопку, и при нажатии всплывающих будет принят автоматически. В этом случае будет принято только первое всплывающее окно.

Смежные вопросы