gpt4 book ai didi

带有 Selenium 的 Python : rerun on pre-existing browser

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:22 25 4
gpt4 key购买 nike

我正在使用 Python 和 Selenium 2.44。当测试失败时,我不能在调试时将失败前的所有代码都取消注释,因为不会为浏览器声明驱动程序。因此,每当我尝试修复某些东西时,我总是必须在测试用例中打开一个新的浏览器。这相当……慢,因为我必须登录,这又增加了 30 秒(不是毁灭性的,但很烦人)。我想知道是否有办法让我继续一个 session ,或者做一些允许我在中途开始测试的方法(所以如果我已经打开了网页,我可以立即开始点击东西而不是打开一个新的浏览器)。这可能吗?

例如,如果我有以下内容:

driver = webdriver.Firefox()
driver.get("google.com")
driver.find_element_by_xpath("//input[@id='gbqfq']").send_keys("cats" + Keys.RETURN)

这应该会打开 Firefox,转到 google,然后搜索 cats。不过,假装在真正进入 google 页面之前你必须做很多事情。现在,如果它在搜索猫时失败,我能够测试以查看我是否修复了代码的唯一方法是重新运行测试(webdriver.Firefox() 将打开一个新浏览器)。而不是那样,假设我仍然打开谷歌,我希望 selenium 测试只是在以前的浏览器和谷歌页面上开始(因此说代码中的第一步是 send_keys("cats "))。这可能吗?

我认为这是一个类似的问题,但它没有被选中作为回答:How to resume browser session or use existing browser window with Selenium-Python?

这个看起来也很相似,只与 Java 有关:How do I rerun Selenium 2.0 (webdriver) tests on the same browser?

谢谢。

最佳答案

查看 pdb:https://docs.python.org/2/library/pdb.html

将它放在您的代码中将停止测试的进行,直到您告诉它在您的 shell 中继续。

使用您的代码片段:

from pdb import set_trace
driver = webdriver.Firefox()
driver.get("google.com")
set_trace()
driver.find_element_by_xpath("//input[@id='gbqfq']").send_keys("cats" + Keys.RETURN)

将在获取 url 后停止执行,允许您进行修补,然后从测试停止的地方继续。

或者,在调试时,您可以删除 driver.quit() 语句,无论它在哪里,这将使浏览器在断言失败的任何地方保持打开状态。但是,如果您将 Django 之类的框架与 LiveTestServer 客户端一起使用,您将无权进一步浏览该站点。 pdb 将允许您保持测试服务器处于事件状态。

关于带有 Selenium 的 Python : rerun on pre-existing browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com