三次iframe框架切換

2021-10-07 13:22:21 字數 1608 閱讀 9840

記錄一次坑。

做ui自動化,頁面是巢狀的frame框架, 整個頁面是乙個iframe。在iframe裡面,上方是乙個frame,下方是乙個frame。下方frame裡又分為左右兩個frame。所以要定位右側頁面元素,需要三次切入frame框架。

在basepage裡有如下**:

#切三層進入下方右側frame

def switch_right_frame(self):

# 定位iframe框架

iframe1 = self.locate_element(』//*[@id=「form1」]/div[3]/iframe』)

# 切換進iframe

self.driver.switch_to.frame(iframe1)

# 定位下方iframe

frame2 = self.locate_element('/html/frameset/frame[2]')

self.driver.switch_to.frame(frame2)

frame_right = self.locate_element('//*[@id="content"]/frame[2]')

self.driver.switch_to.frame(frame_right)

執行提示定位不到frame2

在沒有寫函式的時候,是可以成功定位到右側元素的。所以找不到原因。

嘗試解決方法:

1.在自己定義的locate_element函式裡加上顯示等待。

#根據元素型別進行元素定位

#顯示等待元素存在

def locate_element(self,locator,type=『xpath』):

if type==『xpath』:

webdriverwait(self.driver,10).until(ec.presence_of_element_located((by.xpath,locator)))

self.driver.find_element_by_xpath(locator)

結果執行超時也沒有定位到。

2.猜測是沒有切入到iframe框架裡。

問題在這行**裡

iframe1 = self.locate_element(』//*[@id=「form1」]/div[3]/iframe』)

我用變數去接收定位到的元素,但是locate_element函式沒有return,其實這個變數什麼也沒接收到,所以根本沒有切入iframe。

改**:

#根據元素型別進行元素定位

#顯示等待元素存在

def locate_element(self,locator,type=『xpath』):

if type==『xpath』:

webdriverwait(self.driver,10).until(ec.presence_of_element_located((by.xpath,locator)))

return self.driver.find_element_by_xpath(locator)

定位成功,用例通過。

tcp三次握手 TCP 三次握手總結

tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...

http三次握手 HTTP三次握手,四次揮手。

三次握手 首先解析伺服器dns,找到ip,然後開始建立連線 1.第一次握手 建立連線,客戶端a傳送syn 1 隨機產生seq client isn的資料報到伺服器b,等待伺服器確認。2.第二次握手 伺服器b收到請求後確認聯機 可以接受資料 發起第二次握手請求,ack a的seq 1 syn 1,隨機...

TCP 三次握手

tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...