2016-04-29 44 views
0

我試圖使用xPath來獲取輸入字段的值以驗證該網站是否按預期工作。從jquery data-bvalidator獲取xPath的輸入

但一些輸入標籤正在使用jquery data-bvalidator,我無法訪問它們上的文本/值。

你有一個例子頁面在這裏: bvalidator usage

如果你嘗試把一些文字,例如「阿爾法」在第一個輸入框和嘗試訪問它,在調試模式下,使用:

$x('//*[@id="form1"]/div/div[1]/p[1]/input') 

你只會得到元素<input type="text" data-bvalidator="alpha,minlength[10],required">而不是「阿爾法」值。

我該如何解決這個問題?

PS:這隻適用於鉻。

+0

你可以用'$ X( '// * [@ ID = 「form1的」]/DIV/DIV [1]/P [1] /輸入')獲得的價值0] .value'。僅用xpath獲取值是不可能的。 –

+0

@ hr_117謝謝你的解決,一個問題:)另一個是我們使用selinium來自動化網站測試,而selinium正在使用xPath,並且像這樣我們將被搞砸:/ – Acorian0

+0

嗯/不要這麼想所以。使用seinium,你可以使用'ele.GetAttribute(「value」)'其中'ele'是xpaht搜索的第一個元素。但問題在於你忽略了這個問題的許多細節。 –

回答

1

使用xpath獲取值屬性是不可能的。
如果有xpaht,您可以獲取value屬性值。但是這永遠不會考慮輸入值(屬性)的變化。

$x('//*[@id="form1"]/div/div[1]/p[1]/input/@value') 

爲了得到value您可以使用屬性(在Chrome調試器):

$x('//*[@id="form1"]/div/div[1]/p[1]/input')[0].value 

更新由於在評論中提到硒:

硒可以使用ele.getAttribute("value")其中ELE是xpaht搜索結果中的第一個元素。 或者類似的東西:

driver.findElement(By.xpath(
     '//*[@id="form1"]/div/div[1]/p[1]/input')).getAttribute(‌​"value");