Как выйти из модального диалогового окна в браузере без селена? - PullRequest
4 голосов
/ 08 февраля 2012

Я использую selenium2 + python + amazon ec2 (Ubuntu 11.04) для моего проекта.

По причине безглавой работы в amazon ec2 я использую PyVirtualDisplay Поскольку на сервере нет дисплея.

Когда я запускаю свой проект, я получаю исключение

Traceback (most recent call last):
   File "spyfu_ad_crawler_server.py", line 68, in <module>
     main(i[0])
   File "spyfu_ad_crawler_server.py", line 34, in main
     WebDriverWait(browser, 10).until(lambda driver :    driver.find_element_by_xpath("/html/body/form/div[3]/div[3]/div/div/table/tbody/tr[3]/td/tab le/tbody/tr[2]/td/table/tbody"))
   File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/support/wait.py", line 49, in until
      value = method(self._driver)
    File "spyfu_ad_crawler_server.py", line 34, in <lambda>
      WebDriverWait(browser, 10).until(lambda driver : driver.find_element_by_xpath("/html/body/form/div[3]/div[3]/div/div/table/tbody/tr[3]/td/table/tbody/tr[2]/td/table/tbody"))
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 210, in find_element_by_xpath
       return self.find_element(by=By.XPATH, value=xpath)
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 645, in find_element
       {'using': by, 'value': value})['value']
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 153, in execute
      self.error_handler.check_response(response)
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
      raise exception_class(message, screen, stacktrace)
        WebDriverException: Message: u'Modal dialog present' 


Traceback (most recent call last):
     File "spyfu_ad_crawler_server.py", line 75, in <module>
       browser.get(base_url)
     File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 165, in get
        self.execute(Command.GET, {'url': url})
     File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 153, in execute
         self.error_handler.check_response(response)
     File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
         raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: u'Modal dialog present' 

Как это решить?

Как обрабатывать такие диалоговые окна в селене впитон

1 Ответ

2 голосов
/ 17 марта 2012

Пожалуйста, запустите следующий код до и после выполнения driver.get ():

 driver.execute_script('window.onbeforeunload = function() {}')

Это должно работать.Я не проверял, но на сайте Firefox должно быть больше подробностей об этом событии.

По сути, вы сбрасываете обработчик на веб-странице, которая дает это модальное диалоговое окно.Так что вы не увидите его на экране.Этот подход в значительной степени решил мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...