python自動化測試(二)
簡單對象元素定位
在測試中,要想操作一個頁面元素,你需要首先找到他讥珍。一個頁面元素就像一個人一樣抖苦,他會有各種的特征(屬性)毁菱,如比我們可以通過一個人的身份證號米死,姓名,或者他住在哪個街道贮庞、樓層峦筒、門牌找到這個人。那么一個元素對象也有類似的屬性窗慎,我們可以通過這個屬性找到這對象物喷。
webdriver提供了一系列對象定位方法,比較常用的是以下幾種:
1遮斥、id
2峦失、name
3、class
4术吗、link text
5宠进、tag
6、xpath
7藐翎、css selector
以百度為例:
# coding=utf-8
from selenium import webdriver
import time
# 導(dǎo)入 Selenium 的 webdriver 包材蹬,
# 只有導(dǎo)入 webdriver 包我們才能使用 webdriver API 進(jìn)行自動化腳本的開發(fā)
driver = webdriver.Firefox()
# 將控制的 webdriver 的 Firefox 賦值給 browser;
driver.get("http://www.baidu.com")
time.sleep(2)
# 通過id方式定位
# driver.find_element_by_id("kw").send_keys("python自動化測試")
# 通過name方式定位
# driver.find_element_by_name("wd").send_keys("python自動化測試")
# 通過tag name方式定位
# driver.find_element_by_tag_name("input").send_keys("python自動化測試")
# 通過class name 方式定位
# driver.find_element_by_class_name("s_ipt").send_keys("python自動化測試")
# 通過CSS方式定位
# driver.find_element_by_css_selector("#kw").send_keys("python自動化測試")
# 通過xphan方式定位
driver.find_element_by_xpath("http://input[@id='kw']").send_keys("python自動化測試")
time.sleep(2)
# 百度搜索按鈕點(diǎn)擊
driver.find_element_by_id("su").click()
# 退出并關(guān)閉窗口的每一個相關(guān)的驅(qū)動程序吝镣。
driver.quit()
1堤器、id和name定位
id 和name是我們最最常用的定位方式,因?yàn)榇蠖鄶?shù)控件都有這兩個屬性而且在對控件的id 和name命名時一般使其有意義也會取不同的名字末贾。
通過F12查看百度輸入框
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
id="kw"
通過find_element_by_id("kw") 函數(shù)就是捕獲到百度輸入框
name="kw"
通過find_element_by_name("wd")函數(shù)同樣也可以捕獲百度輸入框
2闸溃、tag name和class name定位
從上面的百度輸入框的屬性信息中,我們看到拱撵,不只有id 和 name兩個屬性辉川,比如class 和 tag name,所以也還可以根據(jù)class和標(biāo)簽名獲得百度輸入框拴测。
<input>
input 就是一個標(biāo)簽的名字乓旗,可以通過find_element_by_tag_name("input") 函數(shù)來捕獲百度輸入框。
class="s_ipt"
通過find_element_by_class_name("s_ipt")函數(shù)捕獲百度輸入框集索。
注意
# 獲得捕獲的第一個元素
find_element_by_tag_name
find_element_by_class_name
# 獲得所有捕獲的元素
find_elements_by_tag_name
find_elements_by_class_name
3屿愚、css定位
CSS使用選擇器來為頁面元素綁定屬性。這些選擇器可以被selenium用作另外的定位策略务荆。
CSS的比較靈活可以選擇控件的任意屬性妆距,使用css定位我們可以這樣子、
# driver.find_element_by_css_selector("#kw").send_keys("python自動化測試")
# driver.find_element_by_css_selector(".s_ipt").send_keys("python自動化測試")
driver.find_element_by_css_selector("input[name=\"wd\"]").send_keys("python自動化測試")
4函匕、xpath定位
XPath是一種在XML文檔中定位元素的語言娱据。因?yàn)镠TML可以看做XML的一種實(shí)現(xiàn),所以selenium用戶可是使用這種強(qiáng)大語言在web應(yīng)用中定位元素盅惜。
路徑表達(dá)式中剩、
xpath.png
# driver.find_element_by_xpath("http://input[@id='kw']").send_keys("python自動化測試")
driver.find_element_by_xpath("http://input[@name='wd']").send_keys("python自動化測試")
5忌穿、link定位
有時候不是一個輸入框也不是一個按鈕,而是一個文字鏈接咽安,我們可以通過link來定位文字鏈接伴网。
#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
time.sleep(2)
browser.find_element_by_link_text("貼 吧").click()
# 也可以通過部分鏈接定位
# browser.find_element_by_partial_link_text("貼").click()
time.sleep(2)
browser.quit()
6蓬推、操作對象
1妆棒、 click 點(diǎn)擊對象
2、send_keys 在對象上模擬按鍵輸入
3沸伏、clear 清除對象的內(nèi)容
4糕珊、text 獲取該元素的文本
5、get_attribute 獲得屬性值
6毅糟、submit 提交表單