如何解决Selenium自动关闭浏览器的问题

在没有使用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.')
物联沃分享整理
物联沃-IOTWORD物联网 » 如何解决Selenium自动关闭浏览器的问题

发表评论