selenium ui自动化遇到切换窗口,点击高级并继续访问的处理方式
在python自动化中(ui),遇到了一个需要浏览器切换窗口,点击“高级”-“接受风险并继续”的操作,前期在本地编写代码调试时,没有任何问题。
切换环境,放到Linux服务中,使用无头模式去运行代码时,发现切换窗口时,总是找不到页面元素,查看截图发现页面为空白,检查两天无果。
场景图片,如下图所示,当点击某个按钮,触发新的浏览器窗口时,所展示的页面:
# 修改之前的启动浏览器部分代码
opt = webdriver.ChromeOptions()
opt.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
opt.add_argument('--hide-scrollbars') # 隐藏滚动条,应对一些特殊页面
opt.add_argument('--headless') # 浏览器不提供可视化界面。Linux下如果系统不支持可视化不加这条会启动失败
cls.driver = webdriver.Chrome(chrome_options=opt)
cls.driver.maximize_window()
经过各种查询,发现是因为少了一个启动的参数,--ignore-certificate-errors 添加为启动选项来忽略不受信任的证书错误
添加上此参数后,问题完美解决,切换的新的窗口后,可以找到元素并进行后续操作。
# 修改之前的启动浏览器部分代码 opt = webdriver.ChromeOptions() opt.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug opt.add_argument('--hide-scrollbars') # 隐藏滚动条,应对一些特殊页面 opt.add_argument('--headless') # 浏览器不提供可视化界面。Linux下如果系统不支持可视化不加这条会启动失败 opt.add_argument('--ignore-certificate-errors') # 添加为启动选项来忽略不受信任的证书错误 cls.driver = webdriver.Chrome(chrome_options=opt) cls.driver.maximize_window()