在我的硒測試中,我需要找到具有特定值的輸入元素。如何使用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選擇器 –