从jquery data-bvalidator获取xPath的输入
问题描述:
我试图使用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:这只适用于铬。
答
使用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");
你可以用'$ X( '// * [@ ID = “form1的”]/DIV/DIV [1]/P [1] /输入')获得的价值0] .value'。仅用xpath获取值是不可能的。 –
@ hr_117谢谢你的解决,一个问题:)另一个是我们使用selinium来自动化网站测试,而selinium正在使用xPath,并且像这样我们将被搞砸:/ – Acorian0
嗯/不要这么想所以。使用seinium,你可以使用'ele.GetAttribute(“value”)'其中'ele'是xpaht搜索的第一个元素。但问题在于你忽略了这个问题的许多细节。 –