如何保持Chrome浏览器窗口打开,以便在python上完成selenium脚本后重新使用

时间:2017-02-04 18:58:39

标签: python selenium webdriver selenium-chromedriver ui-automation

我试图在selenium完成执行我的测试脚本后保持Chrome浏览器打开。我想重新使用同一个窗口来运行我的第二个脚本。

3 个答案:

答案 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})