Selenium 五 frame切換的運用

2022-08-20 06:42:11 字數 1315 閱讀 5588

frame/iframe在我們webdriver運用中比較特別,它們的定位方式在selenium中與其他的標籤是不一樣的。

如果我們要操作被嵌入到frame/iframe中的 html 文件中的元素, 就必須切換webdriver的範圍到被嵌入的文件中。

那麼我們如何切換範圍呢?

這裡可能很多人第一時間就想到了switch_to_frame()方法,但是在pycharm裡面敲出來,我們會發現這個方法被畫上了橫線,顯然這個方法已經過時了!

wd.switch_to_frame()

這裡我們採用selenium提供的switch_to.frame(frame_reference)方法來切換frame

其中, frame_reference 可以是 frame 元素的屬性 name 或者 id 。

例如 iframe元素的id 『frame1』 或者 name屬性值 『frame2』。

我們可以用以下**切換

#

id為frame1

wd.switch_to.frame('

frame1')

#name為frame2

wd.switch_to.frame('

frame2

')

我們也可以通過切換

wd.switch_to.frame(wd.find_element_by_tag_name("

iframe

"))

當我們切換到某個iframe裡面進行操作了,那麼後續選擇和操作介面元素就都是在這個frame裡面進行的。

這時候我們如果要切換為最開始的html這時候我們怎麼做呢?我們可以使用以下方法

wd.switch_to.default_content()

多層frame切換

這裡假設乙個情況,假如乙個frame裡面巢狀了乙個frame這時候怎麼辦?假設外層frame id為frame1,巢狀在內的frame的id為frame2,我要從主html進入被巢狀的frame

這時候我們可以通過層層切入的方式

#

進入第乙個frame

wd.switch_to.frame("

frame1")

#進入第二個frame

wd.switch_to.frame("

frame2

")

這時候我們想要從frame2再切回frame1,可以使用

wd.switch_to.parent_frame()

該方法返回父級標籤,若當前已經是主html則該方法無效

selenium 巢狀frame定位

網頁原始碼 案例1 iframe有id name屬性 網頁上有3個frame header menu main,分別 頂部 左側 右側 其中menu main在另外乙個frameset中 如何定位到 header 框架 driver.switch to frame header 如何定位到 main...

Selenium自動化測試(五)之元素等待

因為某些元素或者某些操作只有載入完成才能夠定位到。time.sleep 3 強制等待不足之處 不靈活如果等待時間不足,程式會報錯 如果等待時間過長,自動化測試的效率會非常低 driver.implicitly wait 30 1 導包 from selenium.webdriver.common.b...

五 Selenium元素定位的八種方法

自動化一般需要四步操作 獲取元素,操作元素,獲取返回結果,斷言 返回結果與期望結果是否一致 最後自動出測試報告。selenium提供8種元素定位的方法 id,name,class name,link text,xpath,css selector,tag name partial link tex。...