Web|Web UI自动化测试基础——元素定位(三)

本篇文章整理了元素定位的基础知识——iframe框架中的元素定位。
一、iframe框架元素定位
iframe是Html页面的内联框架,如果在自动化测试中无法定位到某个元素,那么很有可能是因为该元素在iframe框架中。先来看一下下面3段代码,分别是origin.html和2个iframe框架页面。
Web|Web UI自动化测试基础——元素定位(三)
文章图片
Web|Web UI自动化测试基础——元素定位(三)
文章图片

1 2 3 4 5origin - 锐客网 6 7 8这是原始页面
9 10

11用户名: 12 13 14

origin.html Web|Web UI自动化测试基础——元素定位(三)
文章图片
Web|Web UI自动化测试基础——元素定位(三)
文章图片
1 2 3 4 5iframe_1 - 锐客网 6 7 8这是第1层iframe框架
9 10 11

iframe_1.html Web|Web UI自动化测试基础——元素定位(三)
文章图片
Web|Web UI自动化测试基础——元素定位(三)
文章图片
1 2 3 4 5iframe_2 - 锐客网 6 7 8这是第2层iframe框架
9 10

iframe_2.html 1. 未嵌套iframe
将iframe_1.html的第9行代码注释后,打开origin.html页面,就可以看到只有一层iframe框架的origin页面。效果如下图,红框部分即为嵌套的第一层iframe框架。
【Web|Web UI自动化测试基础——元素定位(三)】Web|Web UI自动化测试基础——元素定位(三)
文章图片

2. 嵌套iframe
将iframe_1.html的第9行代码注释取消后,打开origin.html页面,就可以看到有两层iframe框架的origin页面。效果如下图,红框部分即为嵌套的第一层iframe框架,蓝框部分为嵌套的第二层iframe框架。
Web|Web UI自动化测试基础——元素定位(三)
文章图片

二、实例
1 import time 2 3 from selenium import webdriver 4 5 # 创建driver实例 6 driver = webdriver.Chrome() 7 # 窗口最大化 8 driver.maximize_window() 9 # 打开待测页面 10 driver.get('file:///python/selenium/origin.html') 11 # 隐式等待10s 12 driver.implicitly_wait(10) 13 # 定位原始页面中的p标签 14 origin_p = driver.find_element_by_id('origin_p') 15 # 打印原始页面中p标签的文本 16 print('原始页面p标签的内容:{}'.format(origin_p.text)) 17 # 通过索引方式进入第一层iframe框架 18 driver.switch_to.frame(0) 19 # 定位iframe_1中的p标签 20 parent_p = driver.find_element_by_id('parent_p') 21 # 打印iframe_1中p标签的文本 22 print('第1层iframe框架中p标签的内容:{}'.format(parent_p.text)) 23 # 通过id属性进入第二层iframe框架 24 driver.switch_to.frame('son') 25 # 定位iframe_2中的p标签 26 son_p = driver.find_element_by_id('son_p') 27 # 打印iframe_2中p标签的文本 28 print('第2层iframe框架中p标签的内容:{}'.format(son_p.text)) 29 time.sleep(2) 30 # 跳转到原始页面 31 driver.switch_to.default_content() 32 # 定位原始页面中的input标签 33 user = driver.find_element_by_id('username') 34 # 在input标签中输入admin 35 user.send_keys('admin') 36 # 等待2s 37 time.sleep(2) 38 # 退出驱动程序并关闭浏览器 39 driver.quit()

第10行地址部分根据自己实际地址填写。以上代码中主要体现了进入iframe框架的方法switch_to.frame()和对应的2种方式,即索引方式和id方式;也展示了跳出iframe框架的方法switch_to.default_content()。
运行结果如下:
Web|Web UI自动化测试基础——元素定位(三)
文章图片


参考资料:《Python自动化测试实战》——无涯
转载于:https://www.cnblogs.com/cnblogs0/p/11234560.html

    推荐阅读