gpt4 book ai didi

python - 为什么 python-selenium-webdriver 'quit' 不退出?

转载 作者:太空狗 更新时间:2023-10-29 20:19:35 27 4
gpt4 key购买 nike

我有一个非常复杂的 py.test python-selenium 测试设置,我在 py.test fixture 中创建了一个 Firefox webdriver。这是我在做什么的一些想法:

'驱动.py':

class Driver(object):
"""
Driver class with basic wrappers around the selenium webdriver
and other convenience methods.
"""
def __init__(self, config, options):
"""Sets the driver and the config.
"""

self.remote = options.getoption("--remote")
self.headless = not options.getoption("--with-head")
if self.headless:
self.display = Display(visible=0, size=(13660, 7680))
self.display.start()

# Start the selenium webdriver
self.webdriver = fixefox_module.get_driver()

'conftest.py':

@pytest.fixture
def basedriver(config, options):

driver = driver.Driver(config, options)

yield driver

print("Debug 1")
driver.webdriver.quit()
print("Debug 2")

在运行测试时,我只能看到 Debug 1 被打印出来。整个过程到此为止,似乎没有进行下去。整个 selenium 测试卡在 webdriver.quit) 处。

然而,测试成功完成...

这种行为可能是什么原因?

附录:

执行挂起的原因似乎是一个弹出窗口,询问用户是否因为未保存数据而要离开页面。这意味着 quit 方法的文档不正确。它指出:

Quits the driver and close every associated window.

最佳答案

这是一个非常重要的问题,selenium 的行为确实不一致。 quit 方法应该,如文档所述,只是关闭浏览器窗口,但它没有。相反,您会看到一个弹出窗口,询问用户是否要离开该页面:

enter image description here

讨厌的是这个弹窗只有在用户调用之后才会出现

driver.quit()

解决此问题的一种方法是为驱动程序设置以下配置文件

from selenium import webdriver
profile = webdriver.FirefoxProfile()
# other settings here
profile.set_preference("dom.disable_beforeunload", True)
driver = webdriver.Firefox(firefox_profile = profile)

关于python - 为什么 python-selenium-webdriver 'quit' 不退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703734/

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