今天想寫個126郵箱自動化登入指令碼,由於id是動態的,name也獲取不到,最後通過檢視頁面發現是寫在iframe中,所以要先獲取表單,在獲取表單中的元素,**如下!
1,頁面**:
,2,自動化登入**:
,3,selenium-iframe操作
iframe,又叫浮動幀標記,是內嵌的網頁元素,可以將乙個html檔案嵌入到另乙個html檔案中顯示。
最典型的案例就是163郵箱登入:被綠色覆蓋的部分即為iframe。
對iframe進行操作,需要用到一下種方法:
1.確定要操作的元素是否在iframe上。
firebug給我們提供了乙個很簡易的操作。
以「網易郵箱登入為例」,開啟網頁啟動firebug
隨便選中乙個元素,若左上角顯示的是topwindow,則該元素不在iframe上,如「郵箱賬號登入」
若左上角現實的是iframe#***,則該元素在iframe上,操作該元素需要先切換到該iframe上,***為這個iframe的id。
2.切換
#定位到iframe
iframe=driver.find_element_by_id("x-urs-iframe")
#切換到iframe
driver.switch_to_frame(iframe)
切換之後,就可以對iframe上的元素進行操作。
#登入,自行填寫賬號密碼
driver.find_element_by_css_selector("input[name='email']").send_keys("***")
driver.find_element_by_css_selector("input[name='password']").send_keys("***")
time.sleep(3)
driver.find_element_by_id("dologin").click()
如果不切換直接操作iframe上的元素,編譯器會報錯
selenium.common.exceptions.nosuchelementexception: message: unable to locate element: input[name='email']
3.switch_to_iframe方法上的橫線
當我們呼叫switch_to_iframe時,編譯器會在方法上劃一條線
說明,這個方法雖然能用,但是已經過時,不推薦用。查閱文件可以發現,有一種方法將其替換
4.返回主頁面
我們切換到iframe上之後,就無法對iframe以外的元素進行操作,如果需要,我們需要退出iframe
#退出iframe
driver.switch_to.default_content()
附原始碼:
from selenium import webdriver
import time
driver=webdriver.firefox()
driver.get("")
time.sleep(3)
#定位到iframe
iframe=driver.find_element_by_id("x-urs-iframe")
#切換到iframe
driver.switch_to.frame(iframe)
#登入driver.find_element_by_css_selector("input[name='email']").send_keys("***")
driver.find_element_by_css_selector("input[name='password']").send_keys("***")
time.sleep(3)
driver.find_element_by_id("dologin").click()
#退出iframe
Selenium之元素定位
1.檢視頁面元素 id class type name等。2.通過webdriver的方法定位 絕對路徑 find element by xpath html body div 1 div 1 div div 1 div form span 1 input 相對路徑 find element by ...
selenium之定位方法
html元素定位的方法 1 id find element by id 2 name find element by name 3 class find element by class name 4 tag find element by tag name 5 link find element ...
selenium如何定位同級節點
場景 當定位某個元素時,發現所需要的元素在同級節點,可以用 following sibling 方法 定位同級的第二位 當定位統計節點的第二個定位相鄰節點。可以用 preceding sibling 定位同級的第一位 selenium定位父子 兄弟 相鄰節點定位方法。案例 一 需要定位到關閉按鈕。x...