Python Selenium UnexpectedAlertPresentException

时间:2015-02-08 18:01:41

标签: python selenium selenium-webdriver

我使用selenium webdriver运行python和lettuce的基本CRUD测试。

我的所有其他测试运行正常,但是当我点击"删除"时,会出现一个模态对话框,要求用户确认他们要删除该用户。弹出窗口出现的那一刻,我得到了下面的例外。我浪费了2个小时试图让它工作。我想有一个简单的解决方法。

 File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
UnexpectedAlertPresentException: Message: u'Modal dialog present' ; Stacktrace: 
    at nsCommandProcessor.prototype.execute (file:///tmp/tmpeV2K89/extensions/fxdriver@googlecode.com/components/command_processor.js:11520:13)

出现错误的steps.py中的行是这个。

  world.browser.find_element_by_link_text("Delete User").click()

该元素的html就是这个。

<a href="/users/5910974510923776/delete" onclick="return confirm('Are you sure you want to delete this user?');">Delete User</a>

1 个答案:

答案 0 :(得分:18)

您需要switch to the alert并接受它:

world.browser.find_element_by_link_text("Delete User").click()
alert = world.browser.switch_to.alert
alert.accept()