6.xpath軸定位
7.多種方法結合
三、用by定位
以下方式返回元素位置,如果找到多個元素,則返回第乙個
當我們需要定位一組元素時,使用以下方式,返回的是元素【列表】
1.絕對路徑定位
利用html標籤名的層級關係依次往下進行查詢。
find_element_by_xpath(
"/html/body/div[1]/form/input"
)
一般不會使用這種方法,當頁面元素位置發生改變,就要修改,比較繁瑣
2.相對路徑定位
以//
開頭,長度和開始位置不受限制
find_element_by_xpath(
"//input[x]"
)#[x],表示定位第x個input標籤,可以省略,省略時表示取第乙個
find_element_by_xpath(
"//div[x]/form[x]/input[x]"
)
這裡用到了索引
,需要注意
的是:xpath的定位同一級別的多個標籤索引從1開始
,而不是0.
3.標籤屬性定位
標籤屬性定位,要求屬性唯一,如果存在多個相同屬性的標籤,預設取第乙個
find_element_by_xpath(
"//input[@id='kw']"
) find_element_by_xpath(
"//*[@name='wd']"
)
也可以不指定標籤名,用*
代替,表示任意標籤。
4.文字、邏輯、模糊
a.標籤文字
find_element_by_xpath(
"//button[text()="登入"]"
)
b.邏輯組合
當某個屬性不足以唯一區別某乙個元素時,可以使用邏輯運算子,連線多個條件。邏輯運算支援與(and)、或(or)、非(not)。
find_element_by_xpath(
"//input[@type='name' and @name='kw1']"
)
c.模糊匹配
標籤文字值模糊匹配
find_element_by_xpath(
"//標籤[contains(text(),'文字值')]"
)# 盡量在html中複製文字內容,避免因為肉眼無法分辨的字元導致定位失敗
標籤屬性模糊匹配
find_element_by_xpath(
"//標籤[contains(@href,'logout')]"
)# 標籤的herf屬性中包含logout
標籤屬性的開始、結尾模糊匹配
find_element_by_xpath(
"//button[starts-with(@class,"btn")]"
)# button標籤的class屬性,以btn開頭。當class名為動態值,如'btn-1264',但是值開頭不變時,可以使用
find_element_by_xpath(
"//input[ends-with(@class,"
-special")]"
)# input標籤的class屬性,以-special結尾。
標籤正規表示式匹配
待定
6.xpath軸定位
當某個元素的各個屬性及其組合都不足以定位時,我們可以利用其兄弟節點或者父節點等各種可以定位的元素進行定位,xpath中支援以下方法:
具體使用方法沒有仔細研究,先擺個例子感受一下
find_element_by_xpath(
"//td[contains(text(),』17051915200001』)]/following-sibling::td[8]/a[@class='link']"
)
7.多種方法結合
如果以上方法都不能準確定位到元素,那麼可以使用以上方法的結合,比如使用標籤屬性找到確定父級在根據路徑找到目標元素,比如利用邏輯運算子等等。
find_element_by_xpath(
"//form[@id='form' and name='ert']/span/input"
)find_element_by_xpath(
"//input[@id='kw1']//input[start-with(@id,'nice']/div[1]/form[3]"
)
針對上述8大定位放方法,webdriver還提供了另外一套寫法。呼叫find_element()
方法,通過by來宣告定位方法,並且傳入對應定位方法的引數。具體寫法如下:
find_element(by.id,
"kw"
)find_element(by.name,
"wd"
)find_element(by.class_name,
"s_ipt"
)find_element(by.tag_name,
"input"
)find_element(by.link_text,u"新聞"
)find_element(by.partial_link_text,u"新"
)find_element(by.xpath,
"//*[@class='bg s_btn']"
)find_element(by.css_selector,
"span.bg s_btn_wr>input#su"
)
上述方法在使用前需匯入by類:from selenium.webdriver.common.by import by
。通過檢視webdriver底層**發現,其實和前面的方法是一回事兒,但是webdriver更推薦前面的那種寫法。
史上最全!selenium元素定位的30種方式python selenium xpath定位方式
selenium python環境搭建
安裝python 2.7.版本,其他版本目前支援不好 嘗試cmd下輸入python,若無法呼叫python,需要將python的安裝路徑 python.exe的儲存位置 新增到path系統變數中 3 安裝pycharm整合開發環境 晚上比較多資料,需要破解。4 配置pycharm 開啟pycharm...
selenium python 安裝使用
selenium官網 selenium簡單教程 selenium完整教程 python基礎教程 注意 上去中如果沒有勾選add python to 安執行命令列,會報 pip 不是內部或外部命令 需要手動進行環境配置即可 執行命令視窗 cmd 輸入以下命令安裝selenium pip install...
selenium python環境搭建
一 初始準備 準備工具如下 因為版本都在更新的,python選擇2.7.xx,setuptoosl選擇平台對應的版本。二 安裝 1.安裝python,安裝目錄c python27 2.setuptools 的安裝也非常簡單,同樣是exe檔案,缺省會找到python的安裝路徑,將安裝到c python...