web自動化測試過程中的iframe如何處理?

我們在做自動化測試過程中經常會遇到控件定位不到的情況,具體拋出的錯誤信息如下:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"email"}

複製代碼

但是,我們來看看頁面代碼,再看看自己寫的代碼

emailName = driver.find_element_by_name('email')

複製代碼

沒錯呀,這個錯不了的呀,應該肯定能定位到的,那麼一般就會有幾種原因吧,第一種就是等待時間不夠,第二種就是多窗口,第三種肯定就是iframe了。

我們順騰模塊,往上找會發現,哦,確實有iframe呀。。。

那麼有iframe怎麼處理呢,如果我們的iframe有id或者name的話,並且id或者name的屬性值不爲空的話,並且id和name的屬性值不是動態變化的話,
我們就可以直接通過如下進行切入到iframe中:

driver.switch_to.frame('x-URS-iframe')

複製代碼

如果id或者name是動態的呢,何爲動態的呢,比如像如下的id屬性值

id="auto-id-1604073488440"

複製代碼

這種怎麼辦?無所謂,隨便用一種定位方式先定位到iframe,然後再切入

dd = driver.find_element_by_xpath("//div[@id='loginDiv']/iframe")

driver.switch_to.frame(dd)

emailName = driver.find_element_by_name('email')

複製代碼

此時就大功告成了。。

當然如果想從iframe切出來,那麼怎麼辦?

driver.switch_to.parent_frame(【編測編學】第一屆軟件測試挑戰賽等你報名參加贏大獎!)#從子frame切回到父frame

driver.switch_to.default_content()#切回主文檔

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