1. 程式人生 > >Selenium 多表單(frame/iframe)切換

Selenium 多表單(frame/iframe)切換

AR mes click com 行操作 多層 key 元素定位 info

frame標簽有frameset、frame、iframe三種,frameset跟其他普通標簽沒有區別,不會影響到正常的定位,而frame與iframe需要切換進去才能定位到其中的元素

比如下面這個網頁,有多個frame,以及嵌套iframe,我們在操作裏面元素時,需要切換進去。

技術分享圖片

登陸後,我們要切換進leftFrame進行操作

代碼:

# coding = utf-8
from selenium import webdriver
# 驅動文件路徑
driverfile_path = rD:\coship\Test_Framework\drivers\IEDriverServer.exe
# 啟動瀏覽器 driver = webdriver.Ie(executable_path=driverfile_path) # 打開網頁 driver.get(rhttp://172.21.13.83:28080/) # 登錄 driver.find_element_by_css_selector("[name=‘admin.loginName‘]").send_keys("autotest") driver.find_element_by_css_selector("[name=‘admin.password‘]").send_keys("111111") driver.find_element_by_css_selector(
"input#imageField").click() # 進入leftFrame driver.switch_to.frame("leftFrame") # 點擊鏈接 driver.find_element_by_css_selector("a[title=‘媒資編輯‘]").click() # 退出 driver.quit()

switch_to.frame()默認可以直接使用表單(frame/iframe)的id或name屬性。如果表單沒有id和name屬性,可以使用元素定位方法先找到這個表單,再切換進去

# 先定位到leftFrame
leftframe = driver.find_element_by_css_selector("
frameset#switchFrame>frame") # 切換進leftFrame driver.switch_to.frame(leftframe)

假如在leftFrame中操作完成後,我們還需要進入mainFrame操作元素。這就就要先退出leftFrame,回到主頁,再進入mainFrame

# 進入leftFrame
driver.switch_to.frame("leftFrame")
# 點擊鏈接
driver.find_element_by_css_selector("a[title=‘媒資編輯‘]").click()
# 跳出leftFrame,回到主頁
driver.switch_to.default_content()
# 進入mainFrame
driver.switch_to.frame("mainFrame")
# 點擊導入
driver.find_element_by_link_text("導入").click()

switch_to.default_content()是跳回最外層頁面。

如果進入了多層frame,我們只是想回到上一個frame,可以用

driver.switch_to.parent_frame()

Selenium 多表單(frame/iframe)切換