自動化測試其實就是模擬滑鼠和鍵盤來操作這些元素,包括單擊、輸入、滑鼠懸停等。操作元素的前提就是找到元素,接下來就介紹怎樣去定位元素。
webdriver提供了八種元素定位方法:
from selenium import webdriver
driver = webdriver.chrome(
)driver.get(
"")driver.find_element_by_name(
"wd"
).send_keys(
"selenium"
)driver.find_element_by_id(
"su"
).click(
)driver.quit(
)
html的本質其實就是通過tag來定義實現不同的功能,比如、、等tag,所以很難通過標籤tag name去定位元素find_element_by_tag_name('input')
find_element_by_link_text(
'新聞'
)find_element_by_link_text(
'hao123'
)find_element_by_link_text(
'地圖'
)find_element_by_link_text(
)find_element_by_link_text(
'貼吧'
)
find_element_by_link_text()
方法通過元素標籤對之間的文字資訊來定位元素
partial link定位是對link定位的一種補充,當文字鏈結太長後,我們可以取文字鏈結的一部分定位,只要這一部分資訊可以唯一標識這個鏈結。
1、絕對路徑定位
find_element_by_xpath("/html/body/div[x]/form/input")
x 代表第x個 div標籤,注意,索引從1開始而不是0 此方法缺點顯而易見,當頁面元素位置發生改變時,都需要修改,因此,不推薦使用
from selenium import webdriver
driver = webdriver.chrome(
)driver.get(
"")driver.find_element_by_xpath(
"//input[@id='kw']"
).send_keys(
"selenium"
)driver.find_element_by_xpath(
"//input[@id='su']"
).click(
)driver.quit(
)
4、使用邏輯運算子
xpath還有乙個比較強的功能,是可以多個屬性邏輯運算的,可以支援與(and)、或(or)、非(not)
find_element_by_xpath("//input[@id='kw' and @autocomplete='off']")
一般情況下,css的定位速度會比xpath快,css選擇器的常見語法:
選擇器例子
描述.class
.intro
class選擇器,選擇class="intro"的所有元素
#id#firstname
id選擇器,選擇id="firstname"的所有元素**
選擇所有元素
element
p元素所有標籤
element>element
div>input
選擇父元素為的所有元素
element+element
div+input
選擇同一級中緊接在元素之後的所有元素
[attribute=value]
[target=_blank]
選擇target="_blank"的所有元素
1、通過class屬性定位,(.)表示通過class屬性來定位元素
find_element_by_css_selector(".s_ipt")
2、通過id屬性定位,(#)表示通過id屬性來定位元素
find_element_by_css_selector("#kw")
3、通過標籤定位
find_element_by_css_selector("input")
由於標籤名重複的概率非常大,所以不建議通過這種方式進行定位元素
4、通過父子關係定位
find_element_by_css_selector("span>input")
查詢標籤名span的所有標籤名叫input的子元素
5、通過屬性定位
find_element_by_css_selector("[autocomplete='off']")
find_element_by_css_selector("[name='wd']")
6、組合定位
find_element_by_css_selector("form.fm>span>input#kw")
標籤名為form,class屬性為fm,下一級標籤名span,下一級標籤名input且id屬性值kw
前面介紹的8中定位方法,webdriver還提供了另外一套寫法,統一呼叫find_element()方法,通過by來宣告定位的方法
from selenium import webdriver
from selenium.webdriver.common.by import by
driver = webdriver.chrome(
)driver.get(
'')driver.find_element(by.id,
'kw'
)driver.find_element(by.name,
'wd'
)driver.find_element(by.class_name,
's_ipt'
)driver.find_element(by.tag_name,
'input'
)driver.find_element(by.link_text,
'新聞'
)driver.find_element(by.partial_link_text,
'新')
driver.find_element(by.xpath,
'//*[@id="kw"]'
)driver.find_element(by.css_selector,
'span.bg s_ipt_wr quickdelete-wrap>input#kw'
)
selenium 自動化測試。
第一步安裝 谷歌瀏覽器。第三步編寫測試測試指令碼 第四步 安裝selemium coding utf 8 引入webdriver和unittest所需要的包 from selenium import webdriver from selenium.webdriver.common.by import...
Python自動化測試 Selenium
第乙個selenium就。先show from selenium import webdriver driver webdriver.firefox driver.get assert oxcoder decode utf 8 in driver.title print driver.title d...
自動化測試selenium(四)
三 用例的執行順序 四 unittest斷言 unittest 各元件的關係為 test fixture 初始化和清理測試環境,比如建立臨時的資料庫,檔案和目錄等,其中 setup 和 setdown 是最常用的方法 test case 單元測試用例,testcase 是編寫單元測試用例最常用的類 ...