我遇到一个奇怪的问题,即如果代码在函数或类中,则无法保持打开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页面浏览器仍保持打开状态(因为代码在函数或类之外),而DOM完成加载后,YouTube页面会自动关闭。
我尝试了无数解决方案,但是没有一个起作用。
答案 0 :(得分:1)
函数定义以return关闭,因此驱动程序变量也丢失了,但是当您在函数外部执行该操作时,驱动程序定义仍处于打开状态。
解决方法是在启动chromedriver时使用“ detach”选项。
根据您的情况添加:
chrome_options.add_experimental_option("detach", True)
使用IDE断点也可以实现相同的功能,尽管不建议这样做。