python xpath用法_Python--xpath的使用
chromedriver的版本問題:如果出現版本不匹配,可以嘗試換一個版本的chromedriver;
web自動化的元素定位--8大元素定位
6種元素:
id:---id是唯一的,這時候可以用id定位
name:---用戶交互有關系,例如有input、select、textarea
class_name:---定位的元素一定不能有空格,如果class_name很長,里面有空格,這時候可以只截取部分進行定位;如果復制整個class_name,就會報錯
link_text:---定位超鏈接文本
partial_link_text:---定位超鏈接文本,部分匹配去查找
tagname:---爬蟲喜歡用
通過源碼,可以知道:6大元素定位,最終都是通過css選擇器定位;所以大體上來說只有css和xpath兩種元素定位。
2種路徑
xpath:---xml 路徑語言,使用xpath分為絕對路徑和相對路徑,建議用相對路徑
css:
xpath
寫xpath表達式之前先去瀏覽器寫,確定表達式沒錯,再寫到Python中
xpath相對路徑://span[@class='bg s_ipt_wr quickdelete-wrap'] ---span是你要定位的標簽名,然后[],里面以@開頭,跟著元素值;
----注意:前面說使用class_name定位的時候,值不能有空格;但是當我們用xpath定位的時候,class_name需要復制全部值,包括空格,不然無法找到該元素
contain函數:當屬性值很長的時候,可以使用contain函數,只寫值的某一部分://span[contains(@class, 's_ipt_wr')]
----只有class_name里面包含了's_ipt_wr'就符合條件
text文本在web自動化里面不是元素屬性,不能用@符號去表示;直接寫成: 標簽名[text(),值],例如--//a[contains(text(),"新")]
xpath的索引是從1開始的。
----坑:一般不用,因為索引有時候會變;索引的優先級非常高,如果非要用索引定位,就需要手工提高其他部分的優先級,最后才用索引。例如:(//a[contains(text(),"新")])[1]
xpath軸定位:--面試常問需要記住軸定位的一些表達,根據上面的語法介紹鏈接學習
5.1 傳統組合上下級關系,/和//,在兩個元素之間:
---/表示父子關系://span[contains(@class, 's_ipt_wr')]/span[@class='soutu-btn']
---//表示祖先和孫子關系://form[@id='form']//span[@class='soutu-btn']
5.2 軸定位表示:
通過span去找form,就是定位到當前節點,通過當前節點找祖輩(當前節點名//ancestor::祖輩標簽名):---//span[@class='soutu-btn']//ancestor::form[@id='form']
xpath總結點
什么時候使用xpath定位:
1.1 沒有明顯特征的元素,或者說明顯特性元素找出來的值有很多個(例如id/name/class_name)
1.2 id/name/class_name不是唯一的時候
杜絕直接copy瀏覽器中的xpath,一個是因為copy出來的是絕對路徑;另一個是copy的路徑并不智能。并且在初學xpath的時候,不推薦使用xpath插件,工作中可以使用去提高效率---面試的時候xpath必考,需要自己可以熟練熟悉xpath表達式。
表示關系
3.1 . 或者..
3.2 /或者 // 只能從父級元素到子級元素
3.3 軸運算, //span[@class='soutu-btn']//parent::span 可以從子級找父級,只要記住關系名稱、當前節點名稱;
** 如果不知道要找的父級節點名稱,可以用通配符* 代替 *----就是//span[@class='soutu-btn']//parent::
拓展:css選擇器---可以自己看語法介紹
input#kw: #代表了id
input.soutu-btn: .代表了class_name
面試題
css和xpath的優劣勢:
css更加簡潔
xpath的功能更加強大,對于簡單元素,使用css更加方便;對于復雜元素,使用xpath更合適;
xpath可以通過文本進行定位,但是css不行;
效率。css的解析效率更快一定,xpath的效率比css低;
text()文本定位
在web自動化中,使用selenium有沒有通過text文本進行定位的方法??
A:有,可以通過xpath對text文本進行定位。
在web自動化中,使用selenium有沒有直接通過text文本進行定位的方式?
A:沒有,selenium沒有直接封裝text定位的方式
總結
以上是生活随笔為你收集整理的python xpath用法_Python--xpath的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: camera raw 滤镜预设_Came
- 下一篇: 上海欢乐谷餐厅价目表