Python 使用 selenium:在预先存在的浏览器上重新运行
Python with selenium: rerun on pre-existing browser
我正在使用 Python 和 Selenium 2.44。当测试失败时,我不能在调试时将失败前的所有代码都取消注释,因为不会为浏览器声明驱动程序。因此,每当我尝试修复某些东西时,我总是必须在测试用例中打开一个新的浏览器。这相当……慢,因为我必须登录,这又增加了 30 秒(不是毁灭性的,但很烦人)。我想知道是否有办法让我继续一个会话,或者做一些允许我在中途开始测试的方法(所以如果我已经打开了网页,我可以立即开始点击东西而不是打开一个新的浏览器)。这可能吗?
例如,如果我有以下内容:
driver = webdriver.Firefox()
driver.get("google.com")
driver.find_element_by_xpath("//input[@id='gbqfq']").send_keys("cats" + Keys.RETURN)
这应该会打开 Firefox,转到 google,然后搜索猫。不过,假装在真正进入 google 页面之前您必须做很多事情。现在,如果它在搜索猫时失败,我能够测试以查看我是否修复了代码的唯一方法是重新运行测试(webdriver.Firefox()
将打开一个新的浏览器)。而不是那样,假设我仍然打开 google,我希望 selenium 测试只是在以前的浏览器和 google 页面上开始(因此说代码中的第一步是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 将允许您保持测试服务器处于活动状态。
我正在使用 Python 和 Selenium 2.44。当测试失败时,我不能在调试时将失败前的所有代码都取消注释,因为不会为浏览器声明驱动程序。因此,每当我尝试修复某些东西时,我总是必须在测试用例中打开一个新的浏览器。这相当……慢,因为我必须登录,这又增加了 30 秒(不是毁灭性的,但很烦人)。我想知道是否有办法让我继续一个会话,或者做一些允许我在中途开始测试的方法(所以如果我已经打开了网页,我可以立即开始点击东西而不是打开一个新的浏览器)。这可能吗?
例如,如果我有以下内容:
driver = webdriver.Firefox()
driver.get("google.com")
driver.find_element_by_xpath("//input[@id='gbqfq']").send_keys("cats" + Keys.RETURN)
这应该会打开 Firefox,转到 google,然后搜索猫。不过,假装在真正进入 google 页面之前您必须做很多事情。现在,如果它在搜索猫时失败,我能够测试以查看我是否修复了代码的唯一方法是重新运行测试(webdriver.Firefox()
将打开一个新的浏览器)。而不是那样,假设我仍然打开 google,我希望 selenium 测试只是在以前的浏览器和 google 页面上开始(因此说代码中的第一步是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 将允许您保持测试服务器处于活动状态。