什麼是xpath?
xpath是xml的路徑語言,通俗一點講就是通過元素的路徑來查詢到這個標籤元素
1、xpath支援id、class、name定位功能
//*[@id='inner1'],@代表通過屬性定位
//*[@class='inner']
//*[@name='name']
2、如果標籤沒有id、class、name三種屬性,xpath還支援屬性定位功能,只要你是唯一屬性,就可以定位,無論是預設屬性還是自定義屬性,
@代表以屬性定位,後面可以接標籤中任意屬性
//*[@type='text']
3、當標籤的屬性重複時,xpath提供了通過標籤來進行過濾
將*換為任意標籤名,則可根據標籤進行篩選,如頁面中有多個input框,可以把*換成input,後面再寫屬性,整體的寫法就是//input[@id='i1']
4、當標籤頁重複時,xpath提供了層級過濾,
例如:找不到兒子,那麼就先找他的爸爸,實在不行可以再找他的爺爺,xpath提供了索引過濾,通過索引,在list中定位屬性,與python的索引有些差別,xpath從1開始
支援通過/進行層級遞進,找到符合層級關係的標籤,只有xpath擁有角標定位,css沒有這種方式
//*[@class='driver'][1]/div[2]/input
5、上面幾種如果都用上了之後還重複的話,我們就可以使用xpath提供的終極神器,邏輯運算定位。and或or,
通過and來縮小過濾的範圍,只有條件都符合時才能定位到
//input[@value='彈框' and @onclick='alertnow();']
or就相反了,只要這些篩選中,其中乙個出現那麼就匹配到了
//select[@name='city'or@size='4']
什麼是css selector?
css selector定位實際就是html的css選擇器的標籤定位,
1、css selector支援id、class的定位,與html中css定位相同
#後面直接寫上id的值,如#i1,.代表class,class定位還提供了多個class定位,通過連續.來縮小範圍
.c1.c2.c3,.j_cat.a-all.on,有空格就輸入.,也可以input#i1或input.classname
2、css selector支援任意屬性定位
屬性定位方式與xpath相同,直接中括號,加上屬性就可以了
[placeholder='div的id是inner1'],placeholder沒有重複的
3、css selector提供了多屬性組合過濾
css selector的多屬性組合選擇過濾,沒有and,只需要多個[]連線就可以
select[name='city'][size='4'][multiple='multiple']
4、css selector也支援層級關係定位
與xpath的不同css selector通過>來區分層級的界定,如果定位到裡面沒有唯一的屬性供css來定位,只能用到xpath
select>option[value='3']
5、css selector模糊匹配
^=匹配屬性以什麼開頭
[href^='/bug-create']
$=匹配屬性以什麼結尾
input[value$='值']
*=匹配屬性包含什麼值
input[value*='值']
XPath 用法和例項
usage xpath usr bin env python coding utf 8 date 2017 09 24 20 51 15 author kangvcar kangvcar 126.com link version id 安裝 pip install lxml 路徑表示式 表示式 描述...
XPath說明 XPath資料型別和運算符號
xpath xpath是一種xml路徑表示式,用於在xsl等技術中確定xml文件的節點位置。表示式確定了一顆使用url路徑符號的xml文件節點樹,並且可以使用謂詞和函式篩選節點。xpath節點有元素節點和屬性,元素節點名稱由xml命名空間字首和本地字串組成,命名空間可以為null。還有一種特殊的元素...
關於xpath中的 和
在今天之前,一直沒有注意過.的用法,習慣性的都是用 來查元素。比如在 menu title 中找id div1 的 div 我們可以用 div id div1 webdriver webelement we driver.findelement by.xpath div id div1 如果要繼續找...