Selenium——webdriver,谷歌浏览器跳转到IE浏览器的解决办法

故事背景:

      自动化操作难免会遇到页面跳转,弹框等一系列问题。但是不是所有的页面跳转,通过一个switch_to_* 就能够解决的。今天记录一个很坑爹的问题。谷歌浏览器跳转到ie页面了,这么办?

相关链接:

webdriver如何使用360浏览器:https://blog.csdn.net/five3/article/details/50013159

webdriver的switch_to方法:https://blog.csdn.net/ccggaag/article/details/76652274

 

问题是这样的:

        我司与某司存在某个接口,接口是通过页面交互的。点击某个按钮后,对方接收请求并返回url展示操作内容。操作完成后,再次返回到本司系统页面。简单的说,就是同一个页面内先操作我们页面,跳转到他们页面操作完成后再跳回来。

本来都好说,同一个页面下的跳转,只要等待一会应该就能够操作了,但是问题是,对方比较特殊。只支持ie浏览器。

        其实,这个也好解决,调用webdriver的时候,声明个ie的驱动就行了

driver = webdriver.Ie()

        关键的问题在于,我司只支持谷歌浏览器,

driver = webdriver.Chrome()

问题结论:

        最终可行且有效的解决方法,是反馈给开发,修改我司系统兼容ie浏览器。思考过程比较长,先写个可行的解决方法。感兴趣的可以往下看

 

问题1:既然本系统不支持ie,那对方返回ie页面怎么能够展示?

        答:使用360极速浏览器,这个浏览器好啊,有两种模式:极速模式和兼容模式。其实,经过一番确认,极速模式就是使用的谷歌内核;兼容模式使用的是ie内核,从模式的图标就能看的出来:极速模式图标;兼容模式图标。和前端开发了解到为了实现这种交互,前端使用的是嵌入了谷歌的ie。

问题2:这种页面跳转在写自动化的时候会有什么影响?

        答:首先涉及到一个问题,使用谷歌浏览器是无法访问对方页面的,所以需要让自动化程序运行360浏览器。这个找到了解决方法,链接放在最上面了。相当于使用了谷歌的webdriver,调用了360浏览器,源码如下:

__browser_url = r'D:\360极速浏览器下载\360Chrome\Chrome\Application\360chrome.exe'
chrome_options = Options()
chrome_options.binary_location = __browser_url
driver_BBH = webdriver.Chrome(chrome_options= chrome_options)

        运行我司页面,一点问题没有,但是跳转到对方页面的时候,自动化程序“傻了”,等待了100秒之后,抛出了timeout,error。经过一系科普搜索之后,笔者可以负责任地说,这是因为Chrome驱动,无法驱动ie浏览器。【上一句是废话,但是得出这句废话,用了一天的时间,很难受!】也就是说,一个页面下的所有操作,只能由最一开始打开这个页面的内核进行驱动。打开我司的是webdriver.Chrome(),就无法操作ie内核的页面。

问题3:Switch_to方法难道解决不了这种问题?

        答:先看看switch_to,一共哪些方法:跳转到元素、弹窗、iframe页面、窗口,具体见文头链接。但是真的解决不了问题。switch_to能够运行的一个前提是,webdriver_Chrome()【以下简称谷歌内核】,依然能够对页面进行操作,现在谷歌内核都无法调用页面,switch_to必然没用

问题4:笔者还进行了哪些尝试?

        答:高中的数学老师的一句话,记忆犹新“别在一棵树上吊死,多找几棵吊吊试试,哎~”。

树1:最一开始就使用ie内容操作!——卒:我司不支持ie,返回空白页面

树2:跳转到页面后,将webdriver替换成ie!——卒:webdriver替换了,对原页面的操作也就失效了,无法操作原页面

树3:【个人认为最好的一棵树】跳转到页面后,记录下网址传给使用ie内核的webdriver,对该页面进行操作!——卒卒卒,卒点1:跳转到ie页面后,谷歌内核已经无法操作了,根本获取不到url。卒点2:ie下对该网址进行操作后,数据无法返回到我司系统,造成了脏数据!【虽然认为是最有可能解决问题的一棵树,但是造成的问题反而更多!】。另外,附上webdriver,获取当前页面链接的代码:

driver.current_url

树4:web操作不了,还有app,不用selenium了,用Appnium。但是笔者不会,还在从头学!——依然在进行

 

总结:

        两个系统页面对接,一个只支持ie;一个只支持Chrome/火狐。建议以后遇到这种问题,直接和项目经理反馈,web自动化测试进行不了,省去大部分不必要的分析时间。当然,如果哪位大神有解决的思路,也可以在评论里进行交流,笔者愿意尝试,毕竟作为开发,不能说不行。--虽然只是一个自动化测试员~

        另外本文提到的图片,链接非原创侵删~

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值