web自动化测试过程中的iframe如何处理?

我们在做自动化测试过程中经常会遇到控件定位不到的情况,具体抛出的错误信息如下:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"email"}

复制代码

但是,我们来看看页面代码,再看看自己写的代码

emailName = driver.find_element_by_name('email')

复制代码

没错呀,这个错不了的呀,应该肯定能定位到的,那么一般就会有几种原因吧,第一种就是等待时间不够,第二种就是多窗口,第三种肯定就是iframe了。

我们顺腾模块,往上找会发现,哦,确实有iframe呀。。。

那么有iframe怎么处理呢,如果我们的iframe有id或者name的话,并且id或者name的属性值不为空的话,并且id和name的属性值不是动态变化的话,
我们就可以直接通过如下进行切入到iframe中:

driver.switch_to.frame('x-URS-iframe')

复制代码

扫描二维码关注公众号,回复: 12093638 查看本文章

如果id或者name是动态的呢,何为动态的呢,比如像如下的id属性值

id="auto-id-1604073488440"

复制代码

这种怎么办?无所谓,随便用一种定位方式先定位到iframe,然后再切入

dd = driver.find_element_by_xpath("//div[@id='loginDiv']/iframe")

driver.switch_to.frame(dd)

emailName = driver.find_element_by_name('email')

复制代码

此时就大功告成了。。

当然如果想从iframe切出来,那么怎么办?

driver.switch_to.parent_frame(【编测编学】第一届软件测试挑战赛等你报名参加赢大奖!)#从子frame切回到父frame

driver.switch_to.default_content()#切回主文档

猜你喜欢

转载自blog.51cto.com/14972695/2546742