【问题标题】:Selenium/WebDriver script gets interrupted by alert - exception "Message: u'Modal dialog present'"Selenium/WebDriver 脚本被警报中断 - 异常“消息:u'Modal dialog present'”
【发布时间】:2012-06-04 07:44:54
【问题描述】:

我在 Python/JS 和 Selenium/WebDriver 的自动化测试方面还很新,但我已经取得了一些进展!

现在我被困在某一点上,这真的很令人沮丧。

我正在测试的网站销售产品。我设法让我的脚本随机导航并进入支付页面,填写虚拟数据,使用以下方式提交数据:

browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")

通常,有一个“立即付款”按钮,单击该元素会导致相同的异常,我无法通过 WebDriver(无 WebElement)单击“确定/取消”,但我发现执行此 JS 代码我可以过去的。我新加载的页面(在提交数据并确认发布后)确认并加载了所有正确的数据,但 Python 脚本被中断,我无法继续测试。

有解决办法吗?我想要它做的是忽略该模式对话框,等待下一个确认页面加载,然后继续定位元素,打印它们的值,存储它们等。

尝试使用:

wait = ui.WebDriverWait(browser,10)
wait.until(lambda browser: browser.title.lower().startswith('Your Receipt'))
print(browser.title)

但是脚本被打断了。对不起,如果已经回答了,但我找不到它,而且我是新手!

提前致谢!

编辑:

做到了!在我的情况下,我只是稍微修改了我的代码

browser.execute_script("document.roomBookingForm.submit(); return true;")
alert = browser.switch_to_alert()
alert.dismiss()
browser.execute_script("processPayment(); return true;")

新手注意,您需要导入 Alert。

from selenium.webdriver.common.alert import Alert

【问题讨论】:

    标签: python selenium webdriver


    【解决方案1】:

    新手(比如我)需要导入 Alert 的注意事项。

    from selenium.webdriver.common.alert import Alert
    
    ... ... ... (code placeholder)
    
    browser.execute_script("document.roomBookingForm.submit(); return true;")
    alert = browser.switch_to_alert()
    alert.dismiss()
    browser.execute_script("processPayment(); return true;")
    

    刚刚添加了警报处理程序

    【讨论】:

    • 当然要注意 alert.dismiss() 按下了“取消”按钮;使用 alert.accept() 按“OK”。
    • 答案中的浏览器是webdriver的实例。
    • 对于登录弹出窗口,请在使用alert.accept() 之前使用alert.send_keys(u"user{}pass".format(Keys.TAB))。显然 selenium 需要这样做,以前有人使用win32com.client 输入登录信息。根据用户浏览器工作,但 Selenium 会为任何 find_element 调用踢出 Modal dialog present 错误,直到警报已被 selenium 处理。 GitHub 上的错误来源 github.com/seleniumhq/selenium-google-code-issue-archive/issues/…>
    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2022-11-29
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2013-09-08
    相关资源
    最近更新 更多