自動化測試—多表單切換

在Web應用中經常會遇到frame/iframe表單嵌套頁面的應用,WebDriver只能在一個頁面上對元素識別與定位,對於frame/iframe表單內嵌頁面上的元素無法直接定位,這時就需要通過switch_to_frame()方法將當前定位的主體切換爲frame/iframe表單的內嵌頁面中。

我們拿126郵箱賬號登錄爲例,打開查看元素,然後打開點擊查看頁面中的元素,鼠標移至到郵箱賬號輸入框後可以看到iframe。這說明郵箱賬號和密碼登錄是內嵌到該頁面中的,直接通過WebDriver方法是不會定位到該元素的,這時候如果直接定位的話一定會報:找不到元素,因此這是我們可以使用switch_to_frame()先找到頁面元素中的<iframe>標籤,然後再定位到郵箱賬號輸入框。

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get('https://mail.126.com/')
sleep(5)
#driver.find_element_by_xpath(".//*[@id='switchAccountLogin']").click()
driver.find_element_by_id('switchAccountLogin').click()
sleep(3)
driver.switch_to_frame('x-URS-iframe1585466978439.523').send_keys('sl01224318')                                driver.quit()

switch_to_frame()默認可以直接取表單的id和name屬性。如果iframe沒有可用的id和name屬性,則可以通過下面的方式進行定位:

#通過使用xpath等元素定位方法定位到ifame
#frame = driver.find_element_by_xpath('ifame位置')
#driver.switch_to_frame(frame)

#通過索引位置來定位iframe
#driver.switch_to_frame(0) #比如共搜索到3個iframe,你想要的在第一個,那就是索引0。

以上是對switch_to_frame的簡單介紹,希望能對大家有一絲絲的幫助!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章