Selenium基礎(一):元素定位方法


8種元素定位方法

定位方法 python中對應的方法
id find_element_by_id()
name find_element_by_name()
tag find_element_by_tag_name()
class find_element_by_class_name()
link_text find_element_by_link_text()
partrial link find_element_by_partrial_link_text()
XPath find_element_by_xpath()
CSS_selector find_element_by_css_selector()

以百度為例

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

id定位

  • id在html中唯一
  • id定位方法是通過元素的id來定位元素
    find_element_by_id("kw")

name定位

  • name在html中用來指定元素的名稱
  • name定位是通過元素的name來定位元素
    find_element_by_name("wd")

tag定位

  • html中,通過tag來定義不同頁面的元素,如input用來定義輸入框
  • tag定位是通過元素的標簽名來定位元素
    find_element_by_tag_name("input")

class定位

  • class在html中用來指定元素的類名
  • class定位是通過元素的class來定位元素
    find_element_by_class("s_ipt")
  • link_text定位是專門用來定位文本鏈接
  • link_text定位是通過元素標簽對之間的文字信息來定位元素
<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新聞</a>

find_element_by_link_text("新聞")

partrial link定位

  • partrial link是對link定位的補充,有些文件鏈接比較長,可以取文字鏈接的部分文字進行定位,只要這個部分文字可以唯一表示這個鏈接
  • partrial link定位是通過元素標簽對之間的部分文字信息來定位元素
<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">一個很長的文本鏈接</a>

find_element_by_partrial_link_text("文本鏈接")

XPath定位

絕對路徑定位

  • 用標簽名的層級關系來定位元素的絕對路徑。F12可復制
    find_element_by_xpath("/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input")

元素屬性定位

  • 用元素的屬性來定位。F12可復制
    find_element_by_xpath(//*[@id="kw"])

CSS_selector定位

以百度為例

<span class="soutu-btn">
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
</span>

通過class定位

find_element_by_css_selector(".s_ipt")

"."表示通過通過class定位元素

通過id定位

find_element_by_css_selector("#kw")

"#"表示通過通過id定位元素

通過標簽名定位

find_element_by_css_selector("input")

用標簽名定位時需要任何符號標識,直接使用標簽名

通過標簽層級關系定位

find_element_by_css_selector("span > input")
查找span中所有標簽為input的子元素

通過屬性定位

find_element_by_css_selector("[name='wd']")
使用元素的屬性定位,如name,只要這個屬性能唯一標識這個元素

組合定位

find_element_by_css_selector("span > input#wd")
查找span中所有標簽為input的子元素,並且元素的name屬性為wd

注:

  1. 理想情況下,元素都有唯一的id和name,通過他們來定位即可。但大多數情況下沒有id、name,或屬性重復,這種情況下需要XPath、CSS定位。
  2. Xpath和CSS比較,CSS語法更加簡潔,但是理解和使用難度大,但定位速度比XPath快。這兩種方法掌握一種即可解決大部分定位問題。

find_element和find_elements區別

  1. 只查找一個元素的時候:可以使用find_element(),find_elements()
    find_element()會返回一個WebElement節點對象,但是沒找到會報錯,而find_elements()不會,會返回一個空列表

  2. 查找多個元素的時候:只能用find_elements(),返回一個列表,列表里的元素全是WebElement節點對象

  3. 如果想要獲取元素的相關內容(只對find_element()有效,列表對象沒有這個屬性) 使用 .text;

  4. 如果想要獲取元素相關屬性的值(如href對應的鏈接等,只對find_element()有效,列表對象沒有這個屬性):使用 .get_attribute("href")


免責聲明!

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



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