selenium使用Xpath+JavaScript+jQuery的定位方法

我們先了解一下Xpath基礎(chǔ)語法佑笋,如下:

符號 含義 舉例
/ 從根節(jié)點選取。 /bookstore——選取根元素 bookstore。
// 從匹配選擇的當前節(jié)點選擇文檔中的節(jié)點钠署,而不考慮它們的位置哗戈。 //book——選取所有 book 子元素,而不管它們在文檔中的位置玻佩。
. 選取當前節(jié)點出嘹。
.. 選取當前節(jié)點的父節(jié)點。
@ 選取屬性 //@lang——選取名為 lang 的所有屬性咬崔。

xpath常用函數(shù):

函數(shù)名 舉例 用途
contains () //div[contains(@id,'widget')] 選擇id屬性中包含'widget'的div
text() //a[text()='hello world'] 選擇文本值為'hello world'的節(jié)點
last() 選擇最后一個
starts-with() //div[starts-with(@id,'common')] 選擇id屬性中’common’開頭的div節(jié)點
not() 否定

一.Xpath的定位方法(復制路徑的定位經(jīng)常會經(jīng)常不到的税稼,建議還是手寫吧)

1.通過絕對路徑做定位(不推薦使用!)

WebElement ele = driver.findElement(By.xpath("html/body/div/form/input"));

2.第2種方法:通過元素索引定位

WebElement ele = driver.findElement(By.xpath("http://input[4]"));
例:


image.png

3.使用xpath屬性定位

1)By.xpath("http://input[@id='kw']")


image.png

2)By.xpath("http://input[@class="next_btn" and @value="next" ]")

image.png

3)By.xpath("http://input[@type='radio' or @name='select[]']")


image.png

4.使用部分屬性值匹配(最強大的方法)

WebElement ele = driver.findElement(By.xpath("http://input[start-with(@id,'fuck')]"))——匹配id以fuck開頭的元素垮斯,id='fuckyou'
WebElement ele = driver.findElement(By.xpath("http://input[ends-with(@id,'fuck')]"))——匹配id以fuck結(jié)尾的元素郎仆,id='youfuck'
WebElement ele = driver.findElement(By.xpath("http://input[contains(@id,'fuck')]"))——匹配id中含有fuck的元素,id='youfuckyou'

5.使用任意值來匹配屬性及元素
WebElement ele = driver.findElement(By.xpath("http://input[@*='fuck']"))——匹配所有input元素中含有屬性的值為fuck的元素

6.使用XPATH軸來定位元素
還沒怎么用過兜蠕,就去借用他人的吧:插入# 笑笑唔萊使用xpath的軸(Axis)進行元素定位

注:元素定位總結(jié)(java版)
//By id
WebElement ele = driver.findElement(By.id());
//By Name
WebElement ele = driver.findElement(By.id());
//By className
WebElement ele = driver.findElement(By.className());
//By tabName
WebElement ele = driver.findElement(By.tagName());
//By linkText
WebElement ele = driver.findElement(By.linkText());
//By partialLinkText
WebElement ele = driver.findElement(By.partialLinkText());//通過部分文本定位連接
//By cssSelector
WebElement ele = driver.findElement(By.cssSelector());
//By XPATH
WebElement ele = driver.findElement(By.xpath());

二.selenium用javascript定位

由于selenium的內(nèi)核引擎就是用JavaScript來驅(qū)動的扰肌,所以只要selenium自帶的那些原始辣雞方法出現(xiàn)定位不了的、點擊不了的并發(fā)癥一旦發(fā)作熊杨,就可以使用JavaScript大絕招曙旭,除了JavaScript,還有jQuery大絕招晶府。
以下總結(jié)了5種js定位的方法:
1.通過id獲取
document.getElementById(“id”)
2.通過name獲取

document.getElementsByName(“Name”)
返回的是list
3.通過標簽名選取元素
document.getElementsByTagName(“tag”)
4.通過CLASS類選取元素
document.getElementsByClassName(“class”)
兼容性:IE8及其以下版本的瀏覽器未實現(xiàn)getElementsByClassName方法
5.通過CSS選擇器選取元素
document.querySelectorAll(“css selector")
兼容性:IE8及其以下版本的瀏覽器只支持CSS2標準的選擇器語法
【舉例代碼如下】

js = 'document.getElementById("helloId").click();'

driver.execute_script(js)
js1 = 'document.getElementsByClassName("helloName")[0].value = "王大明";'   //整個HTML文檔里第一個使用CSS樣式類的class="helloName"屬性,它的value屬性的值設(shè)置為“王大明”

driver.execute_script(js1)

三.selenium用jquery定位

待樓主學習后補充

PS:如有疑問歡迎加微信一起探討——VX:zheng520132

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末川陆,一起剝皮案震驚了整個濱河市剂习,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖进倍,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件土至,死亡現(xiàn)場離奇詭異,居然都是意外死亡猾昆,警方通過查閱死者的電腦和手機陶因,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垂蜗,“玉大人楷扬,你說我怎么就攤上這事√” “怎么了烘苹?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長片部。 經(jīng)常有香客問我镣衡,道長,這世上最難降的妖魔是什么档悠? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任廊鸥,我火速辦了婚禮,結(jié)果婚禮上辖所,老公的妹妹穿的比我還像新娘惰说。我一直安慰自己,他們只是感情好缘回,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布吆视。 她就那樣靜靜地躺著,像睡著了一般酥宴。 火紅的嫁衣襯著肌膚如雪啦吧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天拙寡,我揣著相機與錄音授滓,去河邊找鬼。 笑死倒庵,一個胖子當著我的面吹牛褒墨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播擎宝,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郁妈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绍申?” 一聲冷哼從身側(cè)響起噩咪,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤顾彰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胃碾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涨享,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年仆百,在試婚紗的時候發(fā)現(xiàn)自己被綠了厕隧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡俄周,死狀恐怖吁讨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情峦朗,我是刑警寧澤建丧,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站波势,受9級特大地震影響翎朱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尺铣,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一拴曲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迄埃,春花似錦疗韵、人聲如沸兑障。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽流译。三九已至逞怨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間福澡,已是汗流浹背叠赦。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留革砸,地道東北人除秀。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像算利,于是被迫代替她去往敵國和親册踩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容