Selenium 多表單(frame/iframe)切換
阿新 • • 發佈:2018-05-29
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 = r‘D:\coship\Test_Framework\drivers\IEDriverServer.exe‘# 啟動瀏覽器 driver = webdriver.Ie(executable_path=driverfile_path) # 打開網頁 driver.get(r‘http://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)切換