1. 程式人生 > >Python+Selenium練習篇之28-處理iframe切換

Python+Selenium練習篇之28-處理iframe切換

本文介紹如何利用Selenium中方法,在不同iframe中切換。

問題:有時候我們發現元素定位沒問題,在測試回放的過程,發現就是找不到元素報錯。

由於沒有找到合適的iframe網站,這裡不好用程式碼舉例,簡單文字加圖片來介紹。

自己寫了一個網頁,利用iframe網頁框架,把網頁分成上下兩個不同iframe控制的頁面,把下面html程式碼儲存到一個記事本,然後修改名稱為iframe-demo.html

<html>
<head><title>iframe test page</title></head>
<body>
<iframe id="frame1" src="https://www.baidu.com" name="slider" height="325" width="550"></iframe>
<br>
<iframe id="frame2" src="http://example.com" name="example" height="325" width="550"></iframe>
</body>
</html>

用本地瀏覽器開啟如下圖:


用firepath來獲得百度文字輸入框的XPath截圖


看到了紅圈位置不是顯示Top Window,說明你要定位的目標元素在一個iframe裡,如果要操作這個元素,首先需要從預設的Top Window,利用switch_to.frame('iframeid')方法來切換到具體的iframe,然後才能去操作目標元素。

正常百度頁面,文字輸入框截圖


方法介紹:

driver.switch_to.frame("iframe1")
# 操作目標元素,這個目標元素在 iframe1裡面,這裡就是百度文字輸入框輸入文字
driver.switch_to.default_content() 
如果有具體專案頁面利用了iframe, 自己動手寫一下指令碼。