在我的硒测试中,我需要找到具有特定值的输入元素。如何使用XPath测试输入值
<div id="product-list">
<!-- ko foreach: $data.productItems -->
<div class="product-list-item">
<input data-bind="value: $data.name">
</div>
<!-- /ko -->
</div>
我硒测试使用下面的代码来找到输入元素具有特定名称:
UI是由下面的代码呈现
By xpath = By.xpath(".//div[@id='product-list']//div[contains(@class, 'product-list-item')]/input[@value='Product Name']");
WebElement element = browser.getWebDriver().findElement(xpath);
的问题是,元素是自input[value='Product Name]"
总是空将始终失败,因为在输入中没有“值”属性。只有属性“价值”,你可以通过它看到,例如Chrome中的“开发者工具”。
我有一些例子来研究为什么“价值”没有正确处理。
是否有一些建议如何找到正确的输入元素?或者至少说明如何处理值属性vs值属性?
EDIT1:更新例如
EDIT3:不是问题造成无法XPATH访问DOM属性,而且只能够处理HTML(或任何其他XGML在input[@value='Product Name']
EDIT2固定失踪@ )标签结构及其属性?由于淘汰赛仅将真实值推入DOM属性,因此无法通过XPATH访问。
value属性让浏览器设置输入的初始值,所以你不想尝试通过它来选择。使用硒来查找类product-list-item中的所有元素,并遍历它们以获得具有您关心的值的元素。或者执行JavaScript以返回具有所需值的元素。我认为第一种方法更好。 –
@BryanEuton属性值仅用于初始值。这解释了很多,谢谢。但迭代是不可能的。我只有一个单一的xpath必须返回节点(如果存在)。 –
getWebDriver()应该有另一个名为findElements的方法,它需要xpath选择器 –