在没有使用close或者quit的情况下,Selenium自动关闭浏览器就是因为Selenium运行结束了。分两种情况:
1.程序运行完了,所以带着浏览器关闭了。
在命令行运行时,或在打包好的程序里运行时会有这种情况;在使用Pycharm之类IDE运行代码的时候通常不会造成浏览器关闭,但也有可能在某些IDE里面出现。网上有建议使用“option.add_experimental_option("detach", True)”。但是经测试发现这句效果不佳(其实在我这里基本没有起作用)。当然对于这种情况我们可以sleep,但是更建议把浏览器动作放在一个函数里,从而和打开浏览器这个动作分离:
s = Service(r"C:\xxxxxxx\chromedriver.exe")WD = webdriver.Chrome(service = s)def web_actions(): WD.maximize_window() WD.get("https://xxxxxxx") .....web_actions()
2. 程序中断退出,所以带着浏览器关闭了。
程序运行出错,或者用户中断了运行,造成程序中断,带着浏览器一起关闭。这种情况在使用IDE运行代码的时候一般不会造成浏览器关闭。但是在命令行运行时,或在打包好的程序里会造成浏览器关闭。这种情况因为浏览器动作已经被放进函数,所以只需要做个错误处理即可,比如:
try: web_actions()except: time.sleep(1)
3.总结:
s = Service(r"C:\xxxxxxx\chromedriver.exe")WD = webdriver.Chrome(service = s)def web_actions(): WD.maximize_window() WD.get("https://xxxxxxx") .....try: web_actions()except: time.sleep(1)#这里用来保证命令行运行的情况下,Python主程序不结束,否则会带着Selenium彻底退出,一样会关闭浏览器input('Selenium running done.')
来源地址:https://blog.csdn.net/alarmise/article/details/129256472