Selenium驱动程序的Python“ with”语句

问题描述

我的脚本的一部分是从Selenium WebDriver抓取结果,并且因为我的代码应该永远运行(直到我关闭它),所以我实际上没有实现\d{11}方法方法。我尝试使用“ with”语句来执行此操作,但是驱动程序仅在执行driver.quit()之后关闭

init_driver()

解决方法

也许是

with init_driver() as driver:
    while True:
        #...Do stuff
        if condition == False:
            driver.quit()
            break
,

我想您可以显着地使用标准库中的contextlib来实现您的init_driver函数作为上下文管理器。

例如,使用带有@contextlib.contextmanager装饰器的最简单方法,它可能类似于:

from contextlib import contextmanager

@contextmanager
def init_driver(options,profile):
    try:
        driver = webdriver.Firefox(executable_path='geckodriver.exe')
        driver.get('https://www.lsbet.com/live')
        yield driver
    finally:
        # code to close/quit your driver
        pass

(请注意使用yield代替return

,

您可以使用上下文管理器。

fileName = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("Books","Book*.*"),("All files","*.*")))

在with语句下的逻辑完成后,上下文管理器将自动调用 exit ()方法。