您的位置:首页 > 新闻 > 会展 > Selenium + Python 自动化测试06(frame操作方法)

Selenium + Python 自动化测试06(frame操作方法)

2024/12/27 23:08:39 来源:https://blog.csdn.net/weixin_45999406/article/details/140974792  浏览:    关键词:Selenium + Python 自动化测试06(frame操作方法)

        上一篇我们讲述了特殊元素的操作方法,本篇接着讲一些可能遇到的其它操作方法。

如frame操作。

Frame 标签有Frameset、Frame、Iframe 3种,Frameset可以直接照常进行元素定位。Frame、Iframe需要驱动切换到对应的frame才可以定位到。否则 ,会报错。

1、直接定位frame内元素

如下以163邮箱为例

driver = self.driverdriver.get("https://mail.163.com/")driver.maximize_window()#定位用户名输入框driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")time.sleep(3)

这样执行报错:定位不到元素

2、驱动跳转到对应frame

frame 默认使用id、name定位的,看下面iframe 没有固定id,

这个可以使用8大定位方法,tagname定位

<iframe name="" frameborder="0" id="x-URS-iframe1722999269216.9436" scrolling="no" style="width: 100%; height: 100%; border: none; background: none;" src="https://dl.reg.163.com/webzj/v1.0.1/pub/index_dl2_new.html?cd=%2F%2Fmimg.127.net%2Fp%2Ffreemail%2Findex%2Funified%2Fstatic%2F2024%2F%2Fcss%2F&amp;cf=urs.163.918051fb.css&amp;MGID=1722999269216.9436&amp;wdaId=&amp;pkid=CvViHzl&amp;product=mail163"></iframe>

增加跳转,就可以解决上面报错的问题:

#切换frame,对应iframe没有固定id
driver.switch_to.frame(driver.find_element('tag name', 'iframe'))
 

driver = self.driverdriver.get("https://mail.163.com/")driver.maximize_window()#切换frame,对应iframe没有固定iddriver.switch_to.frame(driver.find_element('tag name', 'iframe'))#定位用户名输入框driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")time.sleep(3)

上面的代码驱动已经切换到frame内部,返回的话用:

driver. switch_to.default_content()

如下面代码,返回驱动后就定位 不到了。如下图所示。

#切换frame,对应iframe没有固定iddriver.switch_to.frame(driver.find_element('tag name','iframe'))#定位用户名输入框driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")time.sleep(3)driver.switch_to.default_content()driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")

        以上就是frame内元素定位方法。当我们看到定位失败的情况下,可以考虑是不是元素在frame内需要切换即可。

        每天进步一点点,加油!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com