我试图在selenium完成执行我的测试脚本后保持Chrome浏览器打开。我想重新使用同一个窗口来运行我的第二个脚本。
答案 0 :(得分:1)
Chrome Webdriver实例变量被垃圾回收时,浏览器窗口关闭。如果即使脚本完成执行也要避免这种情况,可以将其设置为全局。即:
def test():
global driver # this will prevent the driver variable from being garbage collected
driver = webdriver.Chrome()
...
说明:
selenium.webdriver.Chrome
类实例包含Service
类的实例。后者具有__del__
方法,当在垃圾回收过程中销毁实例时会调用该方法。该方法会依次停止服务并导致Chrome浏览器窗口关闭。
这也解释了为什么某些用户没有观察到此行为的原因。我怀疑这是因为它们在文件范围而不是函数内部具有Chrome webdriver实例变量。
答案 1 :(得分:0)
这应该就像在测试用例结束时不调用driver.quit()一样简单。你应该让Chrome窗口保持打开状态。
答案 2 :(得分:0)
我知道在WATIR(Ruby语言)中要做什么,我正在编写下面的代码,所以它可能会告诉你如何处理你的语言
require 'watir'
caps = Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options: {detach: true})
b = Watir::Browser.new :chrome, desired_capabilities: caps
b.goto('www.google.co.uk')
下面给出的这一行很重要,如果你可以用你的语言(python)重新写这行,那么你可能会阻止关闭chrome浏览器
caps = Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options: {detach: true})