【Web自動化測試——代碼篇二】條條大路找元素


∮定位單個元素

打車去目的地需要告訴司機地名或者周圍標志建築==,那么我們要讓機器去運行Web,就需要告訴Web元素對應的特征。
接下來~~~算了,還是以我們萬能的度娘為例ο(=•ω<=)ρ⌒☆
圖片.png

例子 屬性 屬性值 定位代碼
Java Python Ruby
搜索框 id kw - find_element_by_id("kw") find_element(:id,'kw')
class s_ipt - find_element_by_class_name("s_ipt") find_element(:class,'s_ipt')
name wd - find_element_by_name("wd") find_element(:name,'wd')
tag input - find_element_by_tag_name("input") find_element(:tag_name,'input')
文字鏈接 標簽a鏈接 hao123 - find_element_by_link_text("hao123") find_element(:link,'hao123')
標簽a鏈接 hao123 - find_element_by_partial_link_text("hao") find_element(:partial_link_text,'hao')
XPath id kw - find_element_by_xpath("//*[@id='kw']") find_element(:xpath,"//*[@id='kw']")
name wd - find_element_by_xpath("//*[@name='wd']") find_element(:xpath,"//*[@name='wd']")
class s_ipt - find_element_by_xpath("//*[@class='s_ipt']") find_element(:xpath,"//*[@class='s_ipt']")
maxlength 100 - find_element_by_xpath("//*[@maxlength='100']") find_element(:xpath,"//*[@maxlength='100']")
autocomplete off - find_element_by_xpath("//*[@autocpmplete='off']") find_element(:xpath,"//*[@autocpmplete='off']")
type submit - find_element_by_xpath("//*[@type='submit']") find_element(:xpath,"//*[@type='submit']")
CSS id kw - find_element_by_css_selector("#kw") find_element(:css,'#kw')
name wd - find_element_by_css_selector("[name='wd']") find_element(:css,"[name='wd']")
class s_ipt - find_element_by_css_selector(".s_ipt") find_element(:css,'.s_ipt')
autocomplete off - find_element_by_css_selector("[autocomplete=off]") find_element(:css,"[autocomplete=off]")
type submit - find_element_by_css_selector("[type='submit']") find_element(:css,"[type='submit']")
By id kw findElement(By.id("kw")) find_element(By.ID,"kw") -
name wd findElement(By.name("wd")) find_element(By.NAME,"wd") -
class s_ipt findElement(By.className("s_ipt")) find_element(By.CLASS_NAME,"s_ipt") -
html input findElement(By.tagName("input")) find_element(By.TAG_NAME,"input") -
標簽a鏈接 hao123 findElement(By.linkText("hao123")) find_element(By.LINK_TEXT,"hao123") -
標簽a鏈接 hao123 findElement(By.partialLinkText("hao")) find_element(By.PARTIAL_LINK_TEXT,"hao") -
XPath //*[@class='s_ipt'] findElement(By.xpath("//*[@class='s_ipt']")) find_element(By.XPATH,"//*[@class='s_ipt']") -
CSS span[@class='bg s_btn_wr']/input[@id='su'] findElement(By.cssSelector("span.bg s_btn_wr>input#su")) find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su") -
↑ 以上部分將通過某個元素的特征來定位元素的(如有遺漏或差錯各位可自行補充修改)
要是像那種沒啥特色的“孩子”,我們還是通過它們的父輩來找到它們
↓ “我的祖宗是body!”( ఠൠఠ )ノ“啪~哪來的熊孩子?我還是html呢~”
XPath /html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input         /*通過絕對路徑找到百度輸入框*/
/html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input         /*通過絕對路徑找到百度搜索按鈕*/
//span[@class='bg s_ipt_wr']/input                                              /*通過層級與屬性結合找到百度輸入框*/
//form[@id='form']/span[2]/input                                               /*通過層級與屬性結合找到百度搜索按鈕*/
//input[@id='kw' and @class='su']/span/input                           /*通過邏輯運算符獲取元素,通過某個元素多個特征找到元素*/
CSS form#form>span>input#kw(CSS不過多給出案例,想要了解更多可自行去查找資料(/ω\*)……… (/ω•\*))
( ̄y▽ ̄)╭ Ohohoho.....雖然獲取元素的方法有很多,但是較常用的還是XPath。獲取XPath的途徑有倆種:
☛  無敵的我,你們都是渣渣_____(ˉ▽ ̄~) 切~~
☛  有那個時間不如多擼根肉串,舊版Firefox的FireBug(新版Firefox自帶獲取xpath),Ctrl C/Ctrl V一下(o゜▽゜)o☆

**代碼時間 **

     實踐出真知。列了這么多方法,還是有必要檢測一下是否有效,雖然無法全部驗證,但是還是要往下看往下看往下看☟☟☟

Java

圖片.png

Python

圖片.png

Ruby

圖片.png

圖片.gif

 

∰定位一組元素

      定義一組元素的方法與定位單個元素的方法類似,唯一的區別在單詞"element"是否加了"s"。元素組的一般操作場景:

  • 批量操作元素(如全選)
  • 選擇一組元素中所需要的部分(如全選后,取消不需要的部分)
  Java Python Ruby
id driver.findElements(By.id,) find_elements_by_id find_elements(:id,)
name driver.findElements(By.name,) find_elements_by_name find_elements(:name,)
class driver.findElements(By.className,) find_elements_by_class_name find_elements(:class,)
tag driver.findElements(By.tagName,) find_elements_by_tag_name find_elements(:tag_name,)
link driver.findElements(By.linkText,) find_elements_by_link_text find_elements(:link,)
partial_link driver.findElements(By.partialLinkText,) find_elements_by_partial_link_text find_elements(:partial_link_text,)
xpath driver.findElements(By.xpath,) find_elements_by_xpath find_elements(:xpath,)
css driver.findElements(By.cssSelector,) find_elements_by_css_selector find_elements(:css,)
在這里只簡簡單單羅列出了8大種定位一組元素的方法,但實際上可以參考定位單個元素的方法上進行擴展,在這就不展現完整了(記得加's'!!!)

有話要說

    自動化不僅適用於web端,也可以適用於手機端,雖說它們之間調用的包呀,或者說是定位元素方法不太一樣,但是它們定位元素的介質是一樣的,如果要是你寫的代碼定位不到元素,那就要檢查你的元素介質是否是對的,尤其是用絕對路徑定位的時候呦ヾ( ̄▽ ̄)ByeBye

 

【上一篇】【Web自動化測試——代碼篇一】簡單的Web自動化腳本

【下一篇】【Web自動化測試——代碼篇三】常用方法——控制瀏覽器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM