基于python3的selenium3的web自動化測試之元素定位——小白進階之路(一)

基于python3的selenium3的web自動化——小白進階之路(一)

1.檢查是否安裝python:cmd—>python? ??


2.檢查是否安裝selenium:cmd—>pip list


3.安裝瀏覽器驅(qū)動,注意瀏覽器的版本和驅(qū)動的版本需對應,百度即可

這里以Chrome為例

Chrome.webdriver 下載地址:http://npm.taobao.org/mirrors/chromedriver/2.41/

下載好放入python的安裝目錄下,或E:\python\Scripts文件夾中,并配置環(huán)境變量

詳情見上篇




4.導包:

from selenium import webdriver? ? ??

dr= webdriver.Chrome()??

dr.get("https://www.baidu.com/")

dr.quit()

selenium工具模擬用戶行為,web的ui層的自動化測試工具

打開瀏覽器,按f12,元素定位


5.HTML標簽:

<html>聲明html網(wǎng)頁

<a>代表的是一個鏈接??

<title>窗口標題

<form>表單 一般存在于登錄頁面

<div>沒名字 是一個塊標簽 一個容器標簽,里面可包含不同的標簽?

<span>沒名字 是一個文本標簽 ,一個文本容器標簽,里面一把放文本不同的標簽

<p>聲明的是一個段落

<input>是一個文本框

<img>代表圖像

<iframe>html 頁面中的一個網(wǎng)頁嵌套另一個網(wǎng)頁

HTML標簽的層級關(guān)系

爺爺類標簽<---- 父類標簽 <---- 子類標簽


HTML頁面中什么是元素?

在HTML頁面中,開始標簽和結(jié)束標簽之間的所有代碼,都叫元素,是一個集合的概念。

元素有什么組成呢?元素有屬性和屬性值


6.元素定位

6.1元素定位方法

find_element_by_id('id屬性值')?? ? --通過id定位

find_element_by_name('name屬性值')? ? --通過name定位

find_element_by_class_name('class的屬性值')? ? --通過class_name定位

find_element_by_link_text(u'文本描述')? ? --通過class屬性定位

find_element_by_xpath(‘xpath語法’)? ? --通過xpath語法定位

find_element_by_css_selector('css語法')? ? ?--通過css語法定位

還有通過tag_name和partial_link_text定位? 使用少,了解即可

定位報錯


檢查元素的屬性值是否唯一


模擬用戶點擊 click()

模擬用戶輸入信息send_keys()

6.2元素定位實例



重點1:定位元素技巧——xpath定位

xpath優(yōu)缺點

優(yōu)點:定位語法豐富(比如可以通過爺爺類,父類標簽定位),功能強大

缺點:定位速度相對css定位速度慢一些,抗變性弱(當元素的路徑在html頁面中發(fā)生改變時需要調(diào)整xpath定位的路徑)

xpath是通過元素的路徑查找元素,一級級的查找從html最外層一直查找到目標元素的所在位置

#通過xpath的絕對路徑定位

#dr.find_element_by_xpath('/html/body/div[2]/div/section[2]/div/form/fieldset/div[2]/input')

#通過xpath的屬性定位

#dr.find_element_by_xpath("http://input[@type='text']").send_keys("selenum自動化")

#dr.find_element_by_xpath("http://*[@type='text']").send_keys("selenum自動化")? ?---1.*表示任意標簽位置,但是type的屬性值必須唯一2.“//”表示先對路徑

xpath定位中用來表示層級關(guān)系的符號:“/”

class 屬性值帶空格的處理辦法:

如果直接用class屬性對應的廍屬性值,一般會報錯。

如果報錯,選取class屬性值中的部分屬性去嘗試,嘗試之前需要驗證該部分屬性值的唯一性

如果唯一,可能能用!也可能不能用!如果不能用,找他爺爺類的標簽和層級去定位

#通過邏輯運算符去定位 and

dr.find_element_by_xpath("http://input[@id='kw' and @autocomplete='off']").send_keys('123')

6.3驗證屬性唯一值得方法:

1.將你的鼠標放到html頁面中,隨意的一個位置

2.按快捷鍵:ctrl+f鍵,此時下面會出現(xiàn)一個文本框

3.在文本框中輸入我們要驗證的屬性值

4.驗證的目的是保證元素的屬性是唯一的

5.如果頁面中發(fā)現(xiàn)屬性值的個數(shù)不是只有一個,那就說明我們不可以使用這個屬性值去定位


6.4

重點2:定位元素技巧——css定位

css是層疊樣式表,用于美化web頁面的一種技術(shù),我們主要使用css中的選擇器作為我們元素定位的一種策略

css定位的優(yōu)缺點

優(yōu)點:1.語法簡潔? 2.定位速度快 3.抗變性強

缺點:不支持多個索引

css的層級關(guān)系表示方法:>

css簡寫說明:

id? ? ? ? ? ————>"#"

class? ? ?————>"."

1.css定位 id? ? ?class (百度文本框)

dr.find_element_by_css_selector('#kw').send_keys('NBA')

dr.find_element_by_css_selector('.s_ipt').send_keys('selenium')

2.css定位? 屬性定位

dr.find_element_by_css_selector("#search-button").click()

dr.find_element_by_css_selector('input[name="wd"]').send_keys('NBA')

3.通過標簽名定位

dr.find_element_by_css_selector("input").send_keys("selenium自動化")

4.通過層級的父子關(guān)系定位

dr.find_element_by_css_selector("div > input").send_keys("selenium自動化")

5.通過層級與屬性組合定位

dr.find_element_by_css_selector("div > input.placeholder#input").send_keys("selenium自動化")

dr.find_element_by_css_selector("div.skin-search-input.hover > input.placeholder#input").send_keys("selenium自動化")

6.css定位 ?爺爺類標簽 層級和屬性結(jié)合 針對于id class

dr.find_element_by_css_selector("form#form>span>input").send_keys('NBA')


總結(jié):

1.元素定位時,如果有id,name,直接使用id,name定位,沒有id,name屬性的元素優(yōu)先考慮css定位

2.在自動化測試項目,定位優(yōu)先使用css定位,除非在css定位無法解決定位問時,這時候可以考慮xpath的路徑定位

因為在自動化測試腳本元素定位使用xpath定位過多,當元素的位置或者路徑發(fā)生改變時,使用xpath定位的腳本需要大批量的改動,這樣的結(jié)果是勞民傷財?shù)?,所以要避免?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容