在nightwatch中逐页获取属性或元素

时间:2017-12-11 11:03:30

标签: nightwatch.js

我需要检查类元素是否为ui-state-active。

class="ui-state-default ui-state-active" href="#">15</a>

我正在尝试使用所有方法,并且没有找不到如何编写代码:

.perform(function () {
    var arrAttr = [];
    var arrCssProp = [];
    var arrValue= [];
    for (i = 1; i < 8; i++) {
      for (j = 1; j < 7; j++) {            
        browser.useXpath();
        browser.getCssProperty('//*[@id="ui-datepicker-div"]/table/tbody/tr[' + i + ']/td[' + j + ']', '.ui-state-default', function (result) {
          arrCssProp[j, i] = result.value;              
        });
        browser.getAttribute('//*[@id="ui-datepicker-div"]/table/tbody/tr[' + i + ']/td[' + j + ']', '.ui-state-default', function (result) {
          arrAttr[j, i] = result.value;
        });
        browser.getValue('//*[@id="ui-datepicker-div"]/table/tbody/tr[' + i + ']/td[' + j + ']', '.ui-state-default', function (result) {
          arrValue[j, i] = result.value;
        });
        browser.useCss();
        writeLogLine('arrAttr:' + i + "|" + j + ' :' + arrAttr);
        console.log('arrAttr:' + i + "|" + j + ' :' + arrAttr);
        writeLogLine('arrCssProp:' + i + "|" + j + ' :' + arrCssProp);
        console.log('arrCssProp:' + i + "|" + j + ' :' + arrCssProp);
        writeLogLine('arrValue:' + i + "|" + j + ' :' + arrValue);
        console.log('arrValue:' + i + "|" + j + ' :' + arrValue);
      }
    }
  })

2 个答案:

答案 0 :(得分:0)

要获取类的属性,可以编写类似的代码

browser.getAttribute(pageObject.getElement('@ui'), "class", function (result) {
if (result.value.indexOf("ui-state-active")!=-1) {
    console.log('class name:' + result.value);
}
else { console.log('class name:' + result.value); }});

您可以使用任何定位器策略。要使用基于类名的CSS策略,请使用.ui-state-default和tagname。

希望这有帮助。

答案 1 :(得分:0)

就像Rohit的示例一样,如果要使用属性值,则依赖该属性值的所有命令都必须位于回调内部。做arrCssProp [j,i] = result.value;将不起作用,因为一旦退出回调,该值就会消失。

有关更多信息,请查看https://github.com/nightwatchjs/nightwatch/wiki/Understanding-the-Command-Queue