李威159 2022-05-12 16:28 采纳率: 40%
浏览 63

python selenium在多线程情况下,中途执行失败视窗虽已关闭仍在任误管理器背景执行

各位好
我的程序在跑到一半抱错时仍会在背景执行
这是因为线程没有被删除吗
因为我目前都是把 driver.quit() 这种挂在程式码的最后边
所以他得要全部流程都跑对才有办法关闭
想请问我该如何在程序失败时将线程完全关闭()
谢谢

from datetime import datetime
from selenium import webdriver
import threading
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
 
def selenium_mult():
    chrome_options = Options()
    chrome_options.add_argument("--headless") 
    ser=Service('./chromedriver')
    driver = webdriver.Chrome(service = ser,options=chrome_options)
    driver.set_window_size(540,480)
    driver.get('https:/website') 
 
    WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="btn"]/div/div[3]/button[1]'))) 
    driver.find_element(By.XPATH, '//*[@id="btn"]/div/div[3]/button[1]').click()  #click button 1
    Ftime = datetime.now()
 
    WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="btn"]/div/div[2]/div[1]/div[6]/div'))) 
    driver.find_element(By.XPATH, '//*[@id="btn"]/div/div[2]/div[1]/div[6]/div').click() #click button 2
    driver.quit()
if __name__ == '__main__':
    for i in range(5):
        t = threading.Thread(target=selenium_mult)
        t.start()

今天可能在按下button 1 失败然后就报错关闭了
但有时在任务管理器背景还是存在WebChrome

  • 写回答

1条回答 默认 最新

  • 於黾 2022-05-12 16:44
    关注

    报错了也不应该关闭
    代码崩溃是因为你没有加try,except
    该加错误捕获的地方都要加上
    你主程序都关闭了,谁来监视子线程啊

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月12日
  • 创建了问题 5月12日

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容