11

我在 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
4

1 回答 1

9

请注意新手(像我一样)需要导入 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;")

刚刚添加了警报处理程序

于 2012-06-05T00:39:02.937 回答