【问题标题】:How to quit modal dialog window in selenium headless browser?如何在硒无头浏览器中退出模式对话框窗口?
【发布时间】:2012-03-01 00:45:48
【问题描述】:

我的项目使用 selenium2 + python + amazon ec2 (Ubuntu 11.04)。

由于亚马逊 ec2 中的 Headless 原因,我正在使用 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' 

应该怎么解决?

如何在python中的selenium中处理这样的对话框?

【问题讨论】:

  • 我遇到了类似的错误,但在我的情况下,它更致命,因为我将硒用于测试以外的其他事情。如果您已经解决了,请分享解决方案。我会同时调查它,如果我找到任何解决方案,请告诉你
  • 我也遇到了同样的错误!如果有人找到解决方案,请与我们分享!

标签: python selenium amazon-ec2 web-crawler webautomation


【解决方案1】:

请在执行 driver.get() 前后运行以下代码:

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

它应该工作。我没有查过,但火狐网站应该有更多关于这个事件的细节。

基本上,您正在重置网页中提供该模式对话框的处理程序。所以你不会看到它显示。这种方法几乎解决了我的问题。

【讨论】:

  • @anujsingh 你能试试这个并更新反馈吗?
  • @ThanasisPetsas 你也是哥们
  • @Sarvana,我已将我的显示名称从 anujsingh 更改为 anupam saini :),我已经在我的代码库中对此进行了测试并且它可以工作。如果您发现任何问题,请告诉我。
  • 当然,伙计..谢谢。我会告诉你的。现在有点忙于其他任务
猜你喜欢
  • 2021-01-22
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多