NightwatchJS .elements返回字符串而不是对象

时间:2015-05-26 21:55:08

标签: selenium acceptance-testing ghostdriver nightwatch.js

我正在使用夜视并尝试迭代元素列表。但是,当我没有获得对象或元素时,我会得到一个字符串数组。

CODE

browser.elements("css selector", ele, function(r){
    browser.perform(function(){
      console.log("LIST", r);
    })
  })

RETURN

LIST { sessionId: 'b273b874-c084-4d17-8bbe-a911a170ef25',
  status: 0,
  state: 'success',
  value:
   [ { ELEMENT: '6' },
     { ELEMENT: '7' },
     { ELEMENT: '8' },
     { ELEMENT: '9' },
     { ELEMENT: '10' },
     { ELEMENT: '11' } ],
  class: 'org.openqa.selenium.remote.Response',
  hCode: 995684858 }

value应该返回webElements的对象吗?

提前致谢

2 个答案:

答案 0 :(得分:10)

我在这个问题上挣扎了一段时间,直到我查看了一些Selenium文档。

基本上这是预期会回归的。那些ELEMENT项是WebElement JSON对象。您可以使用一些Selenium命令来尝试查找有关它们的其他信息,如下所示:

_.each(list.value, function(element, i){ //using underscore instead of for loop.
   browser.elementIdAttribute(element.ELEMENT, 'name', function(result){
       //result.value will contain the name attribute on the element
   }
}

您可以在此处查看selenium上的命令列表: http://nightwatchjs.org/api#protocol

最后,文档中的ID指的是上面的element.ELEMENT。

希望有所帮助!

答案 1 :(得分:-1)

当我尝试访问特定属性并验证其值时。选择的webelement对于每次运行都是不同的。

我的代码在这里

browser.elements('css selector', 'header.modal-header > h2', (results) => {
            results.value.forEach((v, k) => {
               browser.elementIdAttribute(v.ELEMENT, 'tabindex', 
                function (index) {
                   if (index.value !== '-1') {
                        browser.verify.fail(`Expected tab index -1 not found for ContactUs header ${key}`);
                   }
                });