如何使用webdriver作为上下文管理器

时间:2018-02-05 10:32:18

标签: python python-3.x selenium selenium-webdriver web-scraping

我尝试在块中使用ChromeDriver来使代码看起来更好并最终摆脱使用driver.quit()命令。但是,它似乎不起作用。浏览器打开后,会抛出以下错误。也许,我做错了什么。我有没有办法这样做?提前谢谢。

这是我尝试过的:

from selenium import webdriver

with webdriver.Chrome() as wd:
    res = wd.get('https://stackoverflow.com/questions/')
    print(res.page_source)

#Another failure attempt with the same error

with webdriver.Chrome() as wd:
    wd.get('https://stackoverflow.com/questions/')
    print(wd.page_source)

这是我遇到的错误:

    with webdriver.Chrome() as wd:
AttributeError: __exit__

2 个答案:

答案 0 :(得分: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://stackoverflow.com/questions/')
    print(wd.page_source)

答案 1 :(得分:2)

现在它已添加到硒(SeleniumHQ/selenium#5919)中,因此您可以简单地使用问题中的原始方法:

from selenium import webdriver

with webdriver.Chrome() as wd:
    res = wd.get('https://stackoverflow.com/questions/')
    print(res.page_source)