码迷,mamicode.com
首页 > Web开发 > 详细

selenium - webdriver 多表单切换 switch_to.frame()

时间:2020-03-14 23:49:20      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:找不到   无法   元素定位   get   直接   通过   转换   没有   send   

遇到iframe表单嵌套页面时,webdriver无法直接定位其中的元素,需要转换到内嵌的页面中后,再进行元素定位

例如:做一个页面,将百度首页嵌套进去

1 <html>
2 <hody>
3     <iframe id="iff" src="http://www.baidu.com" width="1000" height="800"></iframe>
4 </hody>
5 </html>

页面效果如下:

技术图片

 

 

 

直接定位百度的输入框会报错:找不到元素。可以先跳转到百度页面后,再定位,如下:

switch_to.frame()
 1 from selenium import webdriver
 2 import time
 3 
 4 driver = webdriver.Chrome()
 5 driver.get(D:\\python\\aaa.html)
 6 
 7 driver.switch_to.frame(iff)     # 先跳转到内层页面(默认使用表单的id或name属性)
 8 driver.find_element_by_id(kw).send_keys(zhangyang)   # 再进行元素定位
 9 driver.find_element_by_id(su).click()
10 
11 time.sleep(2)
12 driver.quit()

如果iframe没有可用的id或name属性,可以先通过元素定位方法定位到iframe元素,再讲iframe元素传递给switch进行跳转,如下:

1 element_iframe = driver.find_element_by_id(iff)   # 通过元素定位方法先找到iframe元素
2 driver.switch_to.frame(element_iframe)              # 将元素传递进去

可以使用如下方法跳出表单:

1 driver.switch_to.parent_frame()   # 跳出当前表单
2 driver.switch_to.default_content()  # 跳到最外层页面

 

selenium - webdriver 多表单切换 switch_to.frame()

标签:找不到   无法   元素定位   get   直接   通过   转换   没有   send   

原文地址:https://www.cnblogs.com/xiaochongc/p/12490067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!