一. 定位元素方法
這裡有各種策略用於定位網頁中的元素(locate elements),你可以選擇最適合的方案,selenium提供了一下方法來定義乙個頁面中的元素:
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
下面是查詢多個元素(這些方法將返回乙個列表):
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
除了上面給出的公共方法,這裡也有兩個在頁面物件定位器有用的私有方法。這兩個私有方法是find_element和find_elements。
常用方法是通過xpath相對路徑進行定位,同時css也是比較好的方法。舉例:
定位username元素的方法如下:
username = driver.find_element_by_xpath("//form[input/@name='username']")
username = driver.find_element_by_xpath("//form[@id='loginform']/input[1]")
username = driver.find_element_by_xpath("//input[@name='username']")
[1] 第乙個form元素通過乙個input子元素,name屬性和值為username實現
[2] 通過id=loginform值的form元素找到第乙個input子元素
[3] 屬性名為name且值為username的第乙個input元素
二. 操作元素方法
在講述完定位物件(locate elements)之後我們需要對該已定位物件進行操作,通常所有的操作與頁面互動都將通過webelement介面,常見的操作元素方法如下:
clear 清除元素的內容
send_keys 模擬按鍵輸入
click 點選元素
submit 提交表單
舉例自動訪問firefox瀏覽器自動登入163郵箱。
首先通過name定位使用者名稱和密碼,再呼叫方法clear()清除輸入框預設內容,如「請輸入密碼」等提示,通過send_keys("**")輸入正確的使用者名稱和密碼,最後通過click()點選登入按鈕或send_keys(keys.return)相當於回車登入,submit()提交表單。
ps:如果需要輸入中文,防止編碼錯誤使用send_keys(u"中文使用者名稱")。
三. webelement介面獲取值
通過webelement介面可以獲取常用的值,這些值同樣非常重要。
size 獲取元素的尺寸
text 獲取元素的文字
get_attribute(name) 獲取屬性值
location 獲取元素座標,先找到要獲取的元素,再呼叫該方法
page_source 返回頁面原始碼
driver.title 返回頁面標題
current_url 獲取當前頁面的url
is_displayed() 設定該元素是否可見
is_enabled() 判斷元素是否被使用
is_selected() 判斷元素是否被選中
tag_name 返回元素的tagname
舉例**如下:
四. 滑鼠操作
在現實的自動化測試中關於滑鼠的操作不僅僅是click()單擊操作,還有很多包含在actionchains類中的操作。如下:
五. 鍵盤操作
參考:前面講述了滑鼠操作,現在講述鍵盤操作。在webdriver的keys類中提供了鍵盤所有的按鍵操作,當然也包括一些常見的組合鍵操作如ctrl+a(全選)、ctrl+c(複製)、ctrl+v(貼上)。更多鍵參考官方文件對應的編碼。
send_keys(keys.enter) 按下回車鍵
send_keys(keys.tab) 按下tab製表鍵
send_keys(keys.space) 按下空格鍵space
send_keys(kyes.escape) 按下回退鍵esc
send_keys(keys.back_space) 按下刪除鍵backspace
send_keys(keys.shift) 按下shift鍵
send_keys(keys.control) 按下ctrl鍵
send_keys(keys.arrow_down) 按下滑鼠游標向下按鍵
send_keys(keys.control,'a') 組合鍵全選ctrl+a
send_keys(keys.control,'c') 組合鍵複製ctrl+c
send_keys(keys.control,'x') 組合鍵剪下ctrl+x
send_keys(keys.control,'v') 組合鍵貼上ctrl+v
這裡使用的例子參考蟲師的書籍《selenium2 python自動化測試》,推薦該書給大家。**還是非常有意思的,大家自己去感受下吧~
#coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.keys import keys
driver = webdriver.firefox()
driver.get("")
#輸入框輸入內容
elem = driver.find_element_by_id("kw")
elem.send_keys("eastmount csdn")
time.sleep(3)
#刪除乙個字元csdn 回退鍵
elem.send_keys(keys.back_space)
elem.send_keys(keys.back_space)
elem.send_keys(keys.back_space)
elem.send_keys(keys.back_space)
time.sleep(3)
#輸入空格+"部落格"
elem.send_keys(keys.space)
elem.send_keys(u"部落格")
time.sleep(3)
#ctrl+a 全選輸入框內容
elem.send_keys(keys.control,'a')
time.sleep(3)
#ctrl+x 剪下輸入框內容
elem.send_keys(keys.control,'x')
time.sleep(3)
#輸入框重新輸入搜尋
elem.send_keys(keys.control,'v')
time.sleep(3)
#通過回車鍵替代點選操作
driver.find_element_by_id("su").send_keys(keys.enter)
time.sleep(3)
driver.quit()
csdn的部落格
Python定位元素的方法
通過id定位目標元素 driver.find element by id i1 通過classname定位目標元素 driver.find element by class name c1 通過name屬性定位目標元素 driver.find element by name n1 通過xpath定位...
WebDriver定位元素的方法
本文主要是講解在web頁面中如何定位元素,這是進行自動化操作的前提。我們主要是要做web自動化,通常乙個web頁面上有輸入框 按鈕 文字鏈結 等元素,自動化測試要做的就是模擬滑鼠和鍵盤來操作這些元素,如單擊 輸入 滑鼠懸停等。操作這些元素的前提是要定位它們,就是找到它們的位置,所以下面可以利用web...
定位元素的等待方法
1 顯式等待 newwebdriverwait driver,10 until expectedconditions.presenceofelementlocated by.cssselector css locator 原理 顯式等待,就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等...