如何使用 webdriver 作为上下文管理器
Posted
技术标签:
【中文标题】如何使用 webdriver 作为上下文管理器【英文标题】:How to use webdriver as context manager 【发布时间】:2018-07-15 04:31:30 【问题描述】:我正在尝试在 with 块内使用 ChromeDriver
以使代码看起来更好,并最终摆脱使用 driver.quit()
命令。但是,它似乎不起作用。浏览器一打开,就会抛出以下错误。也许,我做错了什么。没有办法吗?提前致谢。
这是我尝试过的:
from selenium import webdriver
with webdriver.Chrome() as wd:
res = wd.get('https://***.com/questions/')
print(res.page_source)
#Another failure attempt with the same error
with webdriver.Chrome() as wd:
wd.get('https://***.com/questions/')
print(wd.page_source)
这是我遇到的错误:
with webdriver.Chrome() as wd:
AttributeError: __exit__
【问题讨论】:
您尝试将webdriver.Chrome()
用作上下文管理器,但它不是上下文管理器。您可以查看this 以获取有关如何实现自己的上下文管理器的信息
【参考方案1】:
现在它已添加到 selenium (SeleniumHQ/selenium#5919),因此您可以简单地使用问题中的原始方法:
from selenium import webdriver
with webdriver.Chrome() as wd:
res = wd.get('https://***.com/questions/')
print(res.page_source)
【讨论】:
【参考方案2】:试试下面的解决方案,如果不是你想要的,请告诉我:
from selenium import webdriver
class WebDriver:
def __init__(self, driver):
self.driver = driver
def __enter__(self):
return self.driver
def __exit__(self, exc_type, exc_val, exc_tb):
self.driver.quit()
with WebDriver(webdriver.Chrome()) as wd:
wd.get('https://***.com/questions/')
print(wd.page_source)
【讨论】:
以上是关于如何使用 webdriver 作为上下文管理器的主要内容,如果未能解决你的问题,请参考以下文章
Selenium Webdriver:如何使用 Python 下载 PDF 文件?
如何使用 C 或 C++ 将选项添加到 Windows 资源管理器上下文菜单?
JMeter如何联合Selenium WebDriver进行自动化测试?