Selenium自动化Edge浏览器无代码触发自动关闭的解决方法咨询
解决Selenium Edge浏览器自动关闭的问题
问题原因
Python脚本执行完毕后,webdriver.Edge实例会被自动垃圾回收,导致浏览器进程随之关闭,这和你是否编写close()或quit()无关。
解决方案
方法1:添加阻塞语句
在脚本末尾加入input(),让脚本暂停执行,直到你按下回车键才会结束脚本并关闭浏览器。修改后的代码如下:
from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.common.by import By service_object = Service("C:\Users\piyus\OneDrive\Documents\drivers\edge\msedgedriver.exe") driver = webdriver.Edge(service= service_object) driver.maximize_window() driver.get("https://rahulshettyacademy.com/angularpractice/") driver.find_element(By.NAME, "email").send_keys("hello@gmail.com") driver.find_element(By.ID, "exampleInputPassword1").send_keys("1234@Vivo") driver.find_element(By.ID, "exampleCheck1").click() # 阻塞脚本,等待用户输入后再关闭浏览器 input("按下回车键关闭浏览器...") driver.quit()
方法2:配置Edge驱动分离选项
通过EdgeOptions设置detach=True,让浏览器与驱动程序分离,即使脚本执行完毕,浏览器也会保持打开状态,直到你手动关闭或主动调用driver.quit()。代码示例:
from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.edge.options import Options # 配置Edge选项 edge_options = Options() edge_options.add_experimental_option("detach", True) service_object = Service("C:\Users\piyus\OneDrive\Documents\drivers\edge\msedgedriver.exe") # 初始化驱动时传入配置好的options driver = webdriver.Edge(service= service_object, options=edge_options) driver.maximize_window() driver.get("https://rahulshettyacademy.com/angularpractice/") driver.find_element(By.NAME, "email").send_keys("hello@gmail.com") driver.find_element(By.ID, "exampleInputPassword1").send_keys("1234@Vivo") driver.find_element(By.ID, "exampleCheck1").click() # 如需主动关闭,取消下方注释 # driver.quit()
方法3:用try-finally控制关闭时机
如果需要在完成所有操作后主动关闭浏览器,同时避免脚本结束时自动关闭,可以使用try-finally结构,确保关闭操作仅在你指定的时机触发:
from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.common.by import By service_object = Service("C:\Users\piyus\OneDrive\Documents\drivers\edge\msedgedriver.exe") driver = webdriver.Edge(service= service_object) try: driver.maximize_window() driver.get("https://rahulshettyacademy.com/angularpractice/") driver.find_element(By.NAME, "email").send_keys("hello@gmail.com") driver.find_element(By.ID, "exampleInputPassword1").send_keys("1234@Vivo") driver.find_element(By.ID, "exampleCheck1").click() # 可添加更多操作,或用input等待用户确认 input("操作完成,按下回车键关闭浏览器...") finally: # 仅当执行到此处时关闭浏览器 driver.quit()
内容的提问来源于stack exchange,提问作者pkt2891
相关产品推荐
相关产品推荐

