我有一个奇怪的问题,如果代码在函数或类中,我无法保持 Chrome webdriver 打开。即使我不调用驱动程序上的 quit() 函数。
这是功能
def driver_open():
mobile_emulation = {"deviceName": "iPhone 6"}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(r"C:\Users\vaio\Dropbox\PyCharmProjects\Nagora\chromedriver.exe",
desired_capabilities=chrome_options.to_capabilities())
driver.get("https://www.youtube.com/")
return
但是,如果我在一个函数外运行同一段代码,浏览器会保持打开状态,就像这样一个简单的脚本:
mobile_emulation = {"deviceName": "iPhone 6"}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver =webdriver.Chrome(r"C:\Users\vaio\Dropbox\PyCharmProjects\Nagora\chromedriver.exe",
desired_capabilities=chrome_options.to_capabilities())
driver.get("https://www.google.com/")
即使我在同一个 python 文件中运行这两段代码,Google 页面浏览器也会保持打开状态(因为代码在函数或类之外),而 YouTube 页面会在 DOM 完成加载时自动关闭。
我尝试了无数解决方案,但都没有奏效。
函数定义以 return 关闭,因此驱动程序变量也丢失了,但是当您在函数外执行此操作时,驱动程序定义仍然打开。
解决这个问题的方法是在启动 chromedriver 时使用 'detach' 选项。
在您的情况下添加:
chrome_options.add_experimental_option("detach", True)
使用 IDE 断点也可以实现相同的功能,但不推荐使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句