2016-04-29 39 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");