在Web应用中,经常会遇到frame/iframe表单嵌套页面的应用,Webdriver只能在一个页面上对元素识别和定位,对于frame/iframe表单内嵌页面的元素无法直接定位,这时,就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单内嵌的页面中。
'''
Date: 2017/03/28
Method:
* switch_to.frame() 进入表单
* switch_to.default_content() 退出表单至根页面
'''
from selenium import webdriver
import time,os
driver =webdriver.Chrome()
file_path='file:///'+os.path.abspath('./webdriver_api/web_page/frame.html')
driver.get(file_path)
print(file_path)
#切换到iframe(id="if")
driver.switch_to.frame("if")
#下面就可以正常的操作元素了
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()
'''
Date: 2017/03/28
Method:
* switch_to.frame() 进入表单
* switch_to.default_content() 退出表单至根页面
'''
from selenium import webdriver
import time,os
driver =webdriver.Chrome()
file_path='file:///'+os.path.abspath('./webdriver_api/web_page/frame.html')
driver.get(file_path)
print(file_path)
#先通过xpath定位到iframe
xf=driver.find_element_by_xpath('//*[@class="if"]')
#再将定位对象传给switch_to.frame()方法
driver.switch_to.frame(xf)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()
* switch_to.frame() 进入表单
* switch_to.default_content() 退出表单至根页面 * switch_to.parent_content() 跳出当前一级表单
本文介绍了如何使用Selenium WebDriver定位并操作网页中的iframe元素。提供了两种方式:一是通过iframe的ID直接切换;二是当iframe缺乏ID时,利用XPath定位后再进行切换。这两种方法能够帮助测试工程师更好地进行页面元素的操作。
2296

被折叠的 条评论
为什么被折叠?



