在上一篇:Selenium自動化測驗-元素定位(3),我們認識了css定位,
到此為止,已經了解了元素的8種定位方法,今天我們要介紹的是By定位及如何確定元素唯一,
什么是By定位?
(1)有時候我們不知道用哪種方法來定位元素,By定位可以根據實際場景設定定位策略,
(2)By定位和之前學習的8種定位方法差不多,只不過是寫法上的不同,
(3)使用By定位,首先需要匯入By類:
from selenium.webdriver.common.by import By
語法如下:
| 定位方式 | 定位單個元素 |
| id定位 | find_element(By.ID,"id") |
| class定位 | find_element(By.CLASS_NAME,"class") |
| name定位 | find_element(By.NAME,"name") |
| tag定位 | find_element(By.TAG_NAME,"tag") |
| xPath定位 | find_element(By.XPATH,"xPath") |
| Link定位 | find_element(By.LINK_TEXT,"text") |
| PartialLink定位 | find_element(By.PARTIAL_LINK_TEXT,"partialText") |
| CSS選擇器定位 | find_element(By.CSS_SELECTOR,"css") |
我們以百度搜索框為例,看下用By定位是怎么寫的,

由此可見,By定位只是把8種定位統一成一個寫法,
如果覺得匯入By類麻煩,又想把8種寫法統一起來,有辦法么,當然,我們接下來介紹簡化版的:
By.ID = 'id'
By.NAME = 'name'
By.LINK_TEXT = 'link text'
By.PARTIAL_LINK_TEXT = 'partial link text'
By.TAGE_NAME = 'tag name'
By.CLASS_NAME = 'class name'
By.CSS_SELECTOR = 'css selector'
By.XPATH = 'xpath'
用百度搜索框為例,寫簡化版的定位,

是不是發現,這種寫法更方便呢?
定位元素的唯一性
我們在寫自動化腳本程序中,會遇到因為元素不是唯一導致定位元素失敗的場景,那么我們可以先確定此元素是否唯一,再來定位元素,
一、在原始碼中查找
以百度搜索框為例:
1.瀏覽器打開開發者模式(F12),定位到百度搜索框上,發現原始碼如下:
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
2.在css定位中講過,class="s_ipt"、id="kw",css定位可以寫成input.s_ipt,input#kw,
那么快捷鍵Crtl+F,在開發者工具左下角搜索框輸入input.s_ipt 或 input#kw,回車進行搜索:

3.搜索到了會高亮顯示,發現只有一條結果,那么我們可以確定這個元素是唯一的,放心的定位了,有時候也會搜索出多個結果,這個時候我們回車鍵依次查看,元素是否唯一,
二、在控制臺查找
在控制臺console中確定元素的唯一,主要是使用JavaScript獲取HTML DOM元素的方法,語法如下:
id 獲取:document.getElementById()
class 獲取:document.getElementsByClassName()
name 獲取:document.getElementsByName()
tag 獲取:document.getElementsByTagName()
css獲取:document.querySelector()
1.在開發者工具中,切換到console一欄,如下:

2.以百度瀏覽器輸入框為例:
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
其中id="kw",那么可以寫成document.getElementById('kw')
在console下輸入document.getElementById('kw'),然后回車,

只回傳了一條資料,且是我們要查找的元素,那么我們可以確定此元素是唯一的,可以放心的定位了,
下一篇我們將介紹一款定位神器,敬請期待~

感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
① 2000多本Python電子書(主流和經典的書籍應該都有了)
② Python標準庫資料(最全中文版)
③ 專案原始碼(四五十個有趣且經典的練手專案及原始碼)
④ Python基礎入門、爬蟲、web開發、大資料分析方面的視頻(適合小白學習)

⑤ Python學習路線圖(告別不入流的學習)
在我的QQ技術交流群里(技術交流和資源共享,廣告進來腿給你打斷)
可以自助拿走,群號953306497(備注“csdn111”)群里的免費資料都是筆者十多年測驗生涯的精華,還有同行大神一起交流技術哦,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290808.html
標籤:其他
