selenium1. 介紹自動化2. selenium環(huán)境搭建3. WebDriver元素定位3.1 id定位3.2 name定位3.3 class_name定位3.4 tag_name定位3.5 link_text定位3.6 partial_link_text定位3.7 find_element[s]_by_XXX()3.8 Xpath定位3.9 CSS定位4. 元素操作4.1 常用操作4.2 瀏覽器常用方法4.3 WebDriver其它常用方法
selenium
1. 介紹自動化
web自動化:
selenium驮捍、robot framework
App端自動化測試:
Appium、Monkey
接口:
Jmeter淋样、Postman惦积、httpUnit、RESTClient
2. selenium環(huán)境搭建
python:下載python安裝
下載WebDriver筹吐,可以去淘寶鏡像下載糖耸,最好安裝在python目錄下,不需要單獨(dú)配置環(huán)境變量
pip install selenium
3. WebDriver元素定位
-
定位方式8種:
1). id丘薛、name嘉竟、class_name:為元素屬性定位
2). tag_name:為元素標(biāo)簽名稱
3). link_text、partial_link_text:為超鏈接定位(a標(biāo)簽)
4). Xpath:為元素路徑定位
5). Css:為CSS選擇器定位 -
Webdriver代碼格式:
from selenium import webdriver # 導(dǎo)入庫
driver = web driver.Chrome() # 打開瀏覽器
driver.get('url') # 填寫http地址
driver.find_element_by_id("").send_keys("") # 做操作
driver.close() # 關(guān)閉當(dāng)前頁
driver.quit() # 關(guān)閉瀏覽器
3.1 id定位
-
說明:
- id屬性在HTML文檔種必須是唯一的
-
方式:
- find_element_by_id()
3.2 name定位
-
說明:
- HTML規(guī)定name屬性來指定元素名稱洋侨,因此它的作用更像人名舍扰,name的屬性值在當(dāng)前文檔中可以不是唯一的
-
定位方法:
- find_element_by_name()
3.3 class_name定位
-
說明:
- HTML規(guī)定了class來指定元素的類名,用法和name希坚、id類似边苹;
-
定位方法:
- find_element_by_class_name()
-
注意:
- HTML的class元素里的名稱如果用空格分隔,代表多個類名裁僧,寫其中一個就行
3.4 tag_name定位
-
說明:
- HTML本質(zhì)就是由不同的tag(標(biāo)簽)組成个束,而每個tag都是指同一類慕购,所以tag定位效率低,
一般不建議使用播急;tag_name定位就是通過標(biāo)簽名來定位脓钾;
- HTML本質(zhì)就是由不同的tag(標(biāo)簽)組成个束,而每個tag都是指同一類慕购,所以tag定位效率低,
-
定位方法:
-
find_element_by_tag_name()
返回的符合條件的第一個標(biāo)簽
如何獲取第二個元素?
-
3.5 link_text定位
-
說明:
- 專門定位超鏈接文本(<a>標(biāo)簽</a>)
-
方法:
- find_element_by_link_text()
需要傳入a標(biāo)簽全部文本
定位后可以通過 .click() 來進(jìn)行點(diǎn)擊操作
- find_element_by_link_text()
3.6 partial_link_text定位
-
說明:
- partial_link_text定位是對link_text定位的補(bǔ)充桩警,partial_like_text為模糊匹配可训;link_text全部匹配
-
方法:
- find_element_by_partial_link_text()
傳入a標(biāo)簽局部文本
- find_element_by_partial_link_text()
3.7 find_element[s]_by_XXX()
element加了s
-
作用:
- 1. 查找定位所有符合條件的元素
2. 返回的定位元素格式為數(shù)組(列表)格式;
說明:
2.1 列表數(shù)據(jù)格式的讀取需要指定下標(biāo)(下標(biāo)從0開始)
- 1. 查找定位所有符合條件的元素
-
例子
-
使用tag_name獲取第二個元素(密碼框)
driver.find_elements_by_tag_name("input")[1].send_keys("123456")
-
3.8 Xpath定位
Xpath和CSS定位可以解決捶枢,項(xiàng)目中沒有id握截、name、class屬性烂叔,或者id谨胞、name、class屬性值為動態(tài)獲取蒜鸡,隨著刷新或加載而變化
-
方法
- driver.find_element_by_xpath()
-
Xpath定位方式
-
路徑-定位:絕對路徑胯努、相對路徑
-
絕對路徑:從最外層元素到指定元素之間所有經(jīng)過元素層級路徑
- 絕對路徑以 ‘/’開始
-
相對路徑:從第一個符合條件元素開始(一般配合屬性來區(qū)分)
- 相對路徑以‘//’開始
-
-
利用元素等級定位
- 利用元素的唯一屬性定位 :
//*[@id='userA']
- 利用元素的唯一屬性定位 :
-
層級與屬性結(jié)合
- 要找的元素沒有屬性,但是它的父級有:
//*[@id='p1']/input
- 要找的元素沒有屬性,但是它的父級有:
-
屬性與邏輯結(jié)合
- 解決元素之間個相同屬性重名的問題:
//*[@id='telA' and @class='telA']
- 解決元素之間個相同屬性重名的問題:
//[text()="xxx"] 文本內(nèi)容是xxx的元素
//[starts-with(@attribute,'xxx')] 屬性以xxx開頭的元素
//*[contains(@attribute,'Sxxx')] 屬性中含有xxx的元素
-
3.9 CSS定位
CSS定位速度Xpath要快
-
CSS定位方法
- driver.find_element_by_css_selector()
-
方式
-
id選擇器
- 說明:根據(jù)元素id屬性來選擇
格式:#id 如:#userA <選擇id屬性值為userA的所有元素>
- 說明:根據(jù)元素id屬性來選擇
-
class選擇器
- 說明:根據(jù)元素class屬性來選擇
格式:.class 如:.telA <選擇class屬性值為telA的所有元素>
- 說明:根據(jù)元素class屬性來選擇
-
元素選擇器
- 說明:根據(jù)元素的標(biāo)簽名選擇
格式:element 如:input <選擇所有input元素>
- 說明:根據(jù)元素的標(biāo)簽名選擇
-
屬性選擇器
- 說明:根據(jù)元素的屬性名和值來選擇
格式:[attribute=value] 如:[type="password"] <選擇所有type屬性值為password的值>
- 說明:根據(jù)元素的屬性名和值來選擇
-
層級選擇器
- 說明:根據(jù)元素的父子關(guān)系來選擇
格式:element>element 如:p>input <返回所有p元素下所有的input元素>
提示:> 可以用空格代替 如:p input 或者 p [type='password']
- 說明:根據(jù)元素的父子關(guān)系來選擇
1. input[type^='p'] 說明:type屬性以p字母開頭的元素
2. input[type$='d'] 說明:type屬性以d字母結(jié)束的元素
3. input[type*='w'] 說明:type屬性包含w字母的元素
-
CSS功能
-
選擇器 例子 描述 #id #userA id選擇器逢防,選擇id="userA"的所有元素 .class .telA class選擇器叶沛,選擇class="telA"的所有元素 element input 選擇所有input元素 [attribute=value] [type="password"] 選擇type="password"的所有元素 element>element p>input 選擇所有父元素為p元素的input元素 -
XPath與CSS類似功能對比
定位方式 XPath CSS 元素名 //input input id //input[@id='userA'] #userA class //*[@class='telA'] .telA 屬性 1. //※[text()="xxx"] 2. //※[starts-with(@attribute,'xxx')] 3. //※[contains(@attribute,'xxx')] 1. input[type^='p'] 2. input[type$='d'] 3. input[type*='w']
4. 元素操作
4.1 常用操作
clear():清除文本 一般清除input輸入的值
send_keys:模擬輸入
click():單擊元素
4.2 瀏覽器常用方法
1. maximize_window() 最大化 --> 模擬瀏覽器最大化按鈕
2. set_window_size(100,100) 瀏覽器大小 --> 設(shè)置瀏覽器寬、高(像素點(diǎn))
3. set_window_position(300,200) 瀏覽器位置 --> 設(shè)置瀏覽器位置
4. back() 后退 --> 模擬瀏覽器后退按鈕
5. forward() 前進(jìn) --> 模擬瀏覽器前進(jìn)按鈕
6. refresh() 刷新 --> 模擬瀏覽器F5刷新
7. close() 關(guān)閉 --> 模擬瀏覽器關(guān)閉按鈕(關(guān)閉單個窗口)
8. quit() 關(guān)閉 --> 關(guān)閉所有WebDriver啟動的窗口
4.3 WebDriver其它常用方法
1. size 返回元素大小
2. text 獲取元素的文本
3. title 獲取頁面title
4. current_url 獲取當(dāng)前頁面URL
5. get_attribute() 獲取屬性值
6. is_display() 判斷元素是否可見
7. is_enabled() 判斷元素是否可用