Python Selenium - 如何终止未成功生成的Chromedriver?

时间:2018-01-05 17:30:27

标签: python selenium selenium-chromedriver spawn

以下代码行在我的Python脚本中执行:

driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options = chrome_options)

此行可能会失败或成功,具体取决于明显的随机条件(这是由于正在加载的扩展,但这与此无关)。

问题在于,即使此行失败并引发WebDriverException,Chromium的实例仍会产生,最终会泛滥我的整个桌面,因为我在while循环中运行此行直到它正常工作。

以下代码块不起作用,因为未定义驱动程序。

try:
    driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options = chrome_options)
except WebDriverException:
    driver.quit()

如何以聪明的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

正如您所提到的,您有以下几行:

driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options = chrome_options)

此行可以是failsucceed。因此有2个用例可以解决如下:

  • Success :如果上面提到的代码行为Success,我们将立即使用driver.quit(),如下所示:

    try:
        driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options = chrome_options)
        #other code
        driver.quit()
    
  • Failure :如果上面提到的代码行为Failure,我们将使用taskkill模块中的os命令强行杀死 chromedriver process,如下所示:

    import os
    #other code
    try:
        driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options = chrome_options)
        #other code
        driver.quit()
    except WebDriverException:
            os.system("taskkill /im chromedriver.exe")
    

琐事

通过命令webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options = chrome_options),无论是否生成Chromium会话,我们都会在我们的代码中生成一个单独的chromedriver会话。如果您想要终止Chromium会话,您还必须添加以下行:

os.system("taskkill /im chrome.exe")