8

我想斷言/驗證與Nightwatch.js屬性的多個元素。守夜js如何聲明多個元素

我試圖通過硒使用「元素」命令,但它似乎並沒有實際返回標籤。

browser.elements('css selector','icon_checkmark', function (result) { 
    this.verify.attributeEquals(result.value, 'aria-hidden', 'true'); 
}) 

控制檯輸出這樣的錯誤:

Testing if attribute aria-hidden of <[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]> equals "true". 
Element could not be located. - expected "true" but got: null 
ERROR: Unable to locate element: "[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]" using: css selector 

現在看來似乎找到了正確的事情,因爲應該有6但後來不知何故,我讀出了錯誤的事情嗎? result.value [0]的Console.log僅給出{ELEMENT:'19'},這似乎是正確的。

任何想法我怎麼能做這項工作?我想檢查所有具有類icon_checkmark的元素是否具有屬性aria-hidden =「true」。

+0

https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/elements - 「返回: :A的列表{陣列<{ELEMENT串}>}所在元素的WebElement JSON對象。「 不幸的是我無法弄清楚如何通過「由服務器分配給元素的不透明ID」來獲取實際元素。 – mrzmyr 2015-02-10 06:52:55

+0

我無法弄清楚,但我做了一點:https://github.com/nightwatchjs/nightwatch/issues/512 – 2015-06-23 20:55:12

回答

-3

result.value是一個數組。所以你需要遍歷數組result.value [x]

8

attributeEquals使用css選擇器定位元素,而elements返回元素的ID,所以你不能找到這樣的元素。您可以使用elementIdAttribute來獲取元素並進行驗證。

browser.elements('css selector','icon_checkmark', function (result) { 
    result.value.map(function (v, k) { 
    browser.elementIdAttribute(v.ELEMENT, 'aria-hidden', function (res) { 
     // true 
     console.log(res.value) 
    }); 
    }); 
})