selenium - webdriver 多表單切換 switch_to.frame()


遇到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()  # 跳到最外層頁面

 

 

ps:

mac上,打開本地文件

file_path = 'file://' + os.path.abspath('a1.html')
driver.get(file_path)

print(file_path)  # 打印:file:///Users/zhangyang/PycharmProjects/testUI/a1.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM