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。...