Python selenium 元素定位學習筆記

2021-09-24 02:55:30 字數 3006 閱讀 8098

python+selenium學習筆記之元素定位

書籍學習:《selenium2 自動化測試實戰——基於python語言》p69-p83

定位方法型別釋義格式與例項優缺點

id定位

屬性html規定id屬性在html文件中必須是唯一的,但是可能存在頁面上的多個元素的id相同

格式:find_element_by_id("")

find_element_by_id("kw")

定位不到唯一的元素

name定位

屬性html規定name來指定元素的名稱,name的屬性值可以不唯一

格式:find_element_by_name("")

find_element_by_name("wd")

定位不到唯一的元素;不唯一,不必要

class定位

屬性html規定class來指定元素的類名

格式:find_element_by_class_name("")

find_element_by_class_name("s_ipt")

定位不到唯一的元素

tag定位

屬性tag不唯一,乙個tag用來定義一類功能,因此重複性強

格式:find_element_by_tag_name("")

find_element_by_tag_name("input")

定位不到唯一的元素,重複性強

link定位

屬性定位文字鏈結

格式:find_element_by_link_name("")

find_element_by_link_name("新聞")

定位不到唯一的元素

partial link定位

屬性模糊定位,對於文字較長的鏈結,可選取一部分文字進行定位

格式:find_element_by_partial_link_text("")

find_element_by_partial_link_text("很長")

定位不到唯一的元素

xpath定位

絕對路徑

xpath用標籤名的層級關係來定位元素的絕對路徑:最外層是html->body->標籤

格式:find_element_by_xpath("")

div[2]:當前層級下的第二個div

find_element_by_xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input")

繁瑣利用元素屬性

//:當前頁面的某個目錄下

input:定位元素的標籤名

[@id='kw']:元素id等於kw

*:不想制定標籤名

格式:1.find_element_by_xpath("//*[@屬性='']")

2.find_element_by_xpath("//input[@屬性='']")

例項:find_element_by_xpath("//input[@id='kw']")

find_element_by_xpath("//*[@class='bg s_btn']")

xpath不侷限於id、name、class,元素的任意屬性值都可以

層級與屬性

某乙個元素沒有可利用的屬性值,可查詢上一級屬性

格式:find_element_by_xpath("//爺爺/父親/兒子")

例項:find_element_by_xpath("//form[@id='form']/span/input")等價於

find_element_by_id("kw")

find_element_by_xpath("//form[@id='form']/span[2]/input")等價於

find_element_by_id("su")

是絕對路徑的一種寫法

邏輯運算子

如果屬性不能唯一地區分乙個元素,可以使用邏輯運算子連線多個屬性來查詢元素

find_element_by_xpath("//input[@id='kw' and @class='su']/span/input")

css定位

通過class屬性

點號(.)表示通過class屬性定位元素

格式:find_element_by_css_selector(".")

例項:find_element_by_css_selector(".s_ipt")

通過id屬性

井號(#)表示通過id屬性定位元素

格式:find_element_by_css_selector("#")

例項:find_element_by_css_selector("#kw")

通過標籤名

格式:find_element_by_css_selector("")

例項:find_element_by_css_selector("input")

通過父子關係

find_element_by_css_selector("span>input")

父元素為span,子元素為input

通過屬性

find_element_by_css_selector("[autocomplete=off]")

find_element_by_css_selector("[name='kw']")

find_element_by_css_selector('[type="submit"]')

組合定位

find_element_by_css_selector("form.fm>span>input.s_ipt")

說明:標籤form的class屬性值fm下面的span標籤下面的input標籤的class屬性值s_ipt

find_element_by_css_selector("form#form>span>input#kw")

說明:標籤form下的id值為form下面的span標籤下面的input標籤的id值為kw

Python Selenium環境搭建

安裝python 設定 python 的環境變數 安裝目錄 安裝目錄 scripts 使用 pip安裝 selenium pip install selenium 安裝完python pip工具,在安裝目錄的 scripts 目錄下。在 dos下直接執行 pip install selenium 即...

Python Selenium 學習筆記

1 判斷元素是否存在 try driver.find element.xx a true except a false if a true print 元素存在 elif a false print 元素不存在 2 判斷元素是否顯示 driver.find element by id outputb...

Python Selenium錯誤小結

因為要使用web應用,所以開始用起了,selenium包,安裝倒是挺容易的,但就是出了很多bug。filenotfounderror winerror 2 系統找不到指定的檔案。通過錯誤反饋發現是要把該軟體加到路徑裡面,但是,設定了系統環境變數後發現還是不行,最後,使用了乙個非常原始的方法 brow...