日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium处理iframe定位于切换问题解决办法

發(fā)布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium处理iframe定位于切换问题解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先還是圍繞以下幾個方面來看:

1.什么是iframe?

2.為什么我們要定位iframe?

3.我們怎樣定位iframe,與切換iframe?

1.什么是iframe?

? b/s架構(gòu)都使用iframe,官方的定義是這樣的:【iframe 元素會創(chuàng)建包含另外一個文檔的內(nèi)聯(lián)框架(即行內(nèi)框架)】。什么意思呢,就像是我們的某個主頁,里面有好多小模塊,每? ? ? 個 小模塊用這個叫做iframe的東西分開來,方便維護(hù),也方便開發(fā)各自開發(fā)各自的部分,互不相干。

??通常不在同一個iframe分為兩種情況:一種是包含,一種是平級。

2.為什么我們要定位iframe?

? 介于iframe是獨立開的一個一個的小模塊,就像是船艙的特性,所以iframe就行船艙的艙門,想要進(jìn)入船艙去找東西,就必須先進(jìn)入艙門,所以當(dāng)元素在不同的iframe時,就必須先進(jìn)入到元素所在地的iframe之后才能定位到元素。

3.我們怎樣定位iframe,與切換iframe?

? iframe幾種情況:1.包含關(guān)系也就是嵌套 。2.平級關(guān)系

  3.1.定位iframe幾種方式:1.用iframe中的ID來定位 2.用iframe中的name來定位 3.用xpath來定位 4.用css來定位

? 首先我們用self.driver.switch_to.frame()這個方法來進(jìn)入iframe框架,如果iframe是包含關(guān)系,需要從最外面的iframe一層一層進(jìn)入。

self.driver.switch_to.frame()

?

?

?1.用iframe中的ID來定位

self.driver.switch_to.frame('noticeCheckWin')

?2.用iframe中的name來定位

self.driver.switch_to.frame('noticeCheckWin')

?3.用xpath來定位?

self.frame2 = self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/iframe[3]')self.driver.switch_to.frame(self.frame2)#定位動態(tài)的iframe,可以把動態(tài)的部分刪了然后再用xpath定位

??4.用css來定位

self.frame3 = self.driver.find_element_by_css_selector('body > div.h-main > div.h-screen.layout > div.h-screen-con > iframe')#也可以查出所有的路徑用下標(biāo)切出來 self.driver.switch_to.frame(self.frame3)

3.2.退出iframe

? 退出iframe有兩種形式:1.退出所有的iframe切換到主文檔 2.退回到父級iframe

?1.退出所有的iframe切換到主文檔?

self.driver.switch_to.default_content()

?2.退回到父級iframe

switch to.parent_frame()#退回到自己想要的層級

4.場景:1.包含關(guān)系也就是嵌套 。2.平級關(guān)系

??包含關(guān)系也就是嵌套 ,一個iframe的層次在另一個iframe之下。

? 4.1.switch to.parent_frame()#退回到自己想要的層級

self.driver.switch_to.frame('noticeCheckWin')#進(jìn)入一個iframe。 time.sleep(10) self.driver.find_element_by_id('startProcess').click()#進(jìn)入發(fā)起流程 time.sleep(10) self.frame2=self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/iframe[3]') self.driver.switch_to.frame(self.frame2)#進(jìn)入第二個iframe time.sleep(10) self.driver.find_element_by_id('startProcess').click()#定位元素 self.driver.switch to.parent_frame()#退出第二個iframe self.driver.find_element_by_id('account_pass').send_keys('1')#在第一個框架內(nèi)定位元素 self.driver.switch to.parent_frame()#退出第一個iframe

?1.退出所有的iframe切換到主文檔?

self.driver.switch_to.frame('noticeCheckWin')#進(jìn)入一個iframe。 time.sleep(10) self.driver.find_element_by_id('startProcess').click()#進(jìn)入發(fā)起流程 time.sleep(10) self.frame2=self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/iframe[3]') self.driver.switch_to.frame(self.frame2)#進(jìn)入第二個iframe time.sleep(10) self.driver.find_element_by_id('startProcess').click()#定位元素 self.driver.switch_to.default_content()#直接退出第一個iframe

注意:在遇到動態(tài)的ID或者name時我們直接把動態(tài)ID或者name刪掉重新copy,xpath或者,css就行。如圖:

有什么需要補充的或者說的不對的地方請一定要指正出來,謝謝啦。

?

轉(zhuǎn)載于:https://www.cnblogs.com/insane-Mr-Li/p/9086997.html

總結(jié)

以上是生活随笔為你收集整理的selenium处理iframe定位于切换问题解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。