国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

python selenium xpath定位操作

瀏覽:6日期:2022-07-12 15:55:36

xpath是一種在xm文檔中定位的語言,詳細簡介,請自行參照百度百科,本文主要總結(jié)一下xpath的使用方法,個人看法,如有不足和錯誤,敬請指出。

注意:xpath的定位 同一級別的多個標簽 索引從1開始 而不是0

1. 絕對定位:

此方法最為簡單,具體格式為

xxx.find_element_by_xpath('絕對路徑')

具體例子:

xxx.find_element_by_xpath('/html/body/div[x]/form/input') x 代表第x個 div標簽,注意,索引從1開始而不是0

此方法缺點顯而易見,當(dāng)頁面元素位置發(fā)生改變時,都需要修改,因此,并不推薦使用。

2.相對路徑:

相對路徑,以‘//’開頭,具體格式為

xxx.find_element_by_xpath('//標簽')

具體例子:

xxx.find_element_by_xpath('//input[x]') 定位第x個input標簽,[x]可以省略,默認為第一個

相對路徑的長度和開始位置并不受限制,也可以采取以下方法

xxx.find_element_by_xpath('//div[x]/form[x]/input[x]'), [x]依然是可以省略的

python selenium xpath定位操作

('//*[@id=’J_login_form’]/dl/dt/input[@id=’J_password’]'

3.標簽屬性定位:

3.1標簽屬性定位,相對比較簡單,也要求屬性能夠定位到唯一一個元素,如果存在多個相同條件的標簽,默認只是第一個,具體格式

xxx.find_element_by_xpath('//標簽[@屬性==‘屬性值’]')

屬性判斷條件:最常見為id,name,class等等,目前屬性的類別沒有特殊限制,只要能夠唯一標識一個元素都是可以的

具體例子

xxx.find_element_by_xpath('//a[@href=’/industryMall/hall/industryIndex.ht’]') xxx.find_element_by_xpath('//input[@value=’確定’]') xxx.find_element_by_xpath('//div[@class = ’submit’]/input')

當(dāng)某個屬性不足以唯一區(qū)別某一個元素時,也可以采取多個條件組合的方式,具體例子

xxx..find_element_by_xpath('//input[@type=’name’ and @name=’kw1’]')

3.2 當(dāng)標簽屬性很少,不足以唯一區(qū)別元素時,但是標簽中間中間存在唯一的文本值,也可以定位,其具體格式

xxx.find_element_by_xpath('//標簽[contains(text(),’文本值’)]')

具體例子:

xxx.find_element_by_xpath('//iunpt[contains(text(),’型號:’)]')

注意:盡量在html中復(fù)制此段文本,避免因為肉眼無法分辨的字符導(dǎo)致定位失敗

3.3 其他的屬性值如果太長,也可以采取模糊方法定位,直接上示例

python selenium xpath定位操作

xxx.find_element_by_xpath(“//a[contains(@href, ‘logout’)]”)

3.4 XPath 關(guān)于網(wǎng)頁中的動態(tài)屬性的定位,例如,ASP.NET應(yīng)用程序中動態(tài)生成id屬性值,可以有以下四種方法:

a.starts-with例子: input[starts-with(@id,’ctrl’)] 解析:匹配以ctrl開始的屬性值

b.ends-with 例子:input[ends-with(@id,’_userName’)] 解析:匹配以userName結(jié)尾的屬性值

c.contains() 例子:Input[contains(@id,’userName’)] 解析:匹配含有userName屬性值

當(dāng)然,如果上面的單一方法不能完成定位,也可以采取組合式定位 類似('//input[@id=’kw1’]//input[start-with(@id,’nice’]/div[1]/form[3])

以上是普通的情況,存在可以定位的屬性,當(dāng)某個元素的各個屬性及其組合都不足以定位時,我們可以利用其兄弟節(jié)點或者父節(jié)點等各種可以定位的元素進行定位,先看看xpath中支持的方法:

1、child 選取當(dāng)前節(jié)點的所有子元素

2、parent 選取當(dāng)前節(jié)點的父節(jié)點

3、descendant選取當(dāng)前節(jié)點的所有后代元素(子、孫等)

4、ancestor 選取當(dāng)前節(jié)點的所有先輩(父、祖父等)

5、descendant-or-self選取當(dāng)前節(jié)點的所有后代元素(子、孫等)以及當(dāng)前節(jié)點本身

6、ancestor-or-self 選取當(dāng)前節(jié)點的所有先輩(父、祖父等)以及當(dāng)前節(jié)點本身

7、preceding-sibling選取當(dāng)前節(jié)點之前的所有同級節(jié)點

8、following-sibling選取當(dāng)前節(jié)點之后的所有同級節(jié)點

9、preceding選取文檔中當(dāng)前節(jié)點的開始標簽之前的所有節(jié)點

10、following選取文檔中當(dāng)前節(jié)點的結(jié)束標簽之后的所有節(jié)點

11、self 選取當(dāng)前節(jié)點

12、attribute 選取當(dāng)前節(jié)點的所有屬性

13、namespace選取當(dāng)前節(jié)點的所有命名空間節(jié)點

python selenium xpath定位操作

上圖實例,需要點擊訂單號為17051915200001的發(fā)貨按鈕,這時候不能直接定位到發(fā)貨按鈕,而是先要定位到訂單號元素,再定位他的兄弟節(jié)點。

參照上圖,我們首先定位到td標簽中包含訂單號的td元素,然后選擇其之后的同級節(jié)點,following-sibling,我們要找的元素在后面的第8個td標簽下,因此定位可以寫名為下面的格式

Xxx.find_element_by_xpath('//td[contains(text(),’17051915200001’)]/following-sibling::td[8]/a[@class=’link’]')

preceding-sibling 情況類似,但是所有元素的排列順序是相反的(和following-sibling相反),如圖:

python selenium xpath定位操作

其他方法的使用方式相同, 11-13目前沒有使用過,也沒有搜索到實際使用的案例,如果有人知道,希望不吝賜教。

補充知識:Python+selenium:用“and”連接屬性定位元素

如下所示:

find_element_by_xpath('//input[@id=’kw’ and @class=’su’]/span/input') //用and來連接屬性定位元素

以上這篇python selenium xpath定位操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产一区二区三区免费播放 | 免费99视频有精品视频高清 | 精品欧美成人高清视频在线观看 | 日韩欧美在线观看一区 | 俄罗斯18videosex性欧美成人 | 99精品网 | 免费精品国产 | 国内精品伊人久久 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | a级精品九九九大片免费看 a级毛片免费观看网站 | 亚洲国产欧美在线人成精品一区二区 | 亚洲国产高清在线精品一区 | 久久黄色精品视频 | 国产成人精品高清不卡在线 | 欧美日韩免费一区二区三区 | 国产精品深爱在线 | 欧美日韩在线视频观看 | 毛片免费观看视频 | 中文字幕一区二区三区 精品 | 免费视频精品一区二区三区 | 一区在线视频 | 国产成人精品一区二区秒拍 | 国产亚洲高清不卡在线观看 | 黄色三级毛片 | 国产一级片大全 | 国产人成免费视频 | 欧美精品亚洲精品日韩一区 | 最近最新中文字幕免费的一页 | 经典国产一级毛片 | 日韩免费一级a毛片在线播放一级 | 久久精品视频1 | 男人的天堂高清在线观看 | 亚洲美女性视频 | 日韩精品一区二区三区中文字幕 | 亚洲免费在线观看视频 | 免费一级欧美片在线观看 | 成人在线免费 | 绝对真实偷拍盗摄高清在线视频 | 久久综合日韩亚洲精品色 | 欧美日韩中文字幕在线观看 | 国产99久久精品 |