JavaScript -> getAttribute в webdriver.io - PullRequest
0 голосов
/ 14 декабря 2018
    var checkBoxes = await $$('.checkbox.moduleName') 
    console.log('length', $$('.checkbox.moduleName').length)
    checkBoxes.forEach((elem)=>{
        console.log(elem)
        console.log(elem.getAttribute('value'))
    })

Это мой код.У меня есть несколько флажков с классом .checkbox.moduleName.Когда я печатаю длину, она печатается как 10. Но тогда функция getAttribute не работает.

 TypeError: elem.getAttribute is not a function
at checkBoxes.forEach 

Как мне получить атрибут 'value' для флажков?

Iпопробовал это тоже

       var valueAttrs =
        checkBoxes
            .map(function(e){
                console.log('e', e)
                return e.getAttribute('value');
            });

    valueAttrs.forEach(v=>{console.log('value: ' + v);});

та же ошибка

Это HTML-строка у меня

  <input type="checkbox" class="checkbox moduleName" id="module110" name="module[]" value="110">

1 Ответ

0 голосов
/ 14 декабря 2018

Ваш elem будет содержать объект ELEMENT, поэтому вы должны получить атрибут с помощью команды Protocol API на основе значения ELEMENT ( id ), в нашем случае elementIdAttribute .

Так попробуйте это:

var checkBoxes = await $$('.checkbox.moduleName');
console.log('length', $$('.checkbox.moduleName').length);

checkBoxes.forEach((elem) => {
    console.log(elem);
    console.log(browser.getIdAttribute(elem.value.ELEMENT, 'value'));
});

Пример ( использовал страницу с формой входа ):

> let tt = $$('form input');
> tt

[{ELEMENT: '0.41525845584401533-2', 'element-6066-11e4-a52e-4f735466cecf': '0.415258455844015333-2 ', селектор:' ввод формы ', значение: {ELEMENT:' 0.41525845584401533-2 '}, индекс: 0}, {ELEMENT:' 0.41525845584401533-3 ',' element-6066-11e4-a52e-4f735466cecf ':'0.41525845584401533-3 ', селектор:' ввод формы ', значение: {ELEMENT:' 0.41525845584401533-3 '}, индекс: 1}, {ELEMENT:' 0.41525845584401533-4 ',' element-6066-11e4-a52e-4f735466cecf ':'0.41525845584401533-4', селектор: 'ввод формы', значение: {ELEMENT: '0.41525845584401533-4'}, индекс: 2}, {ELEMENT: '0.41525845584401533-5', 'element-6066-11e4-a52e-4f735466cecf': '0.41525845584401533-5 ', селектор: «ввод формы», значение: {ELEMENT:' 0.41525845584401533-5 '}, индекс: 3}]

> tt.forEach((elem) => { console.log(browser.elementIdAttribute(elem.value.ELEMENT, 'class')); })

{sessionId:' 1eb7b6df6484f97a9571bb93d6a95d1d ', значение: '_2hvTZpexuQ zyHYP', _status: 0} {sessionId: '1eb7b6df6484f97a9571bb93d6a95d1d', значение: '_2hvTZ pexuQ zyHYP', _status: 0} {sessionId: '0h0h0h0h1p1{sessionId: '1eb7b6df6484f97a9571bb93d6a95d1d', значение: '_2hvTZ pexuQ zyHYP', _status: 0}

Вы можете дополнительно использовать значение атрибута через свойство value:

tt.forEach((elem) => { 
  let ret = browser.elementIdAttribute(elem.value.ELEMENT, 'class'); 
  console.log(`> Elem has these classes: ${ret.value}`); 
});
1037
1037*

Элем имеет следующие классы: _2hvTZ pexuQ zyHYP Элем имеет следующие классы: _2hvTZ pexuQ zyHYP Элем имеет следующие классы: _2hvTZ pexuQ zyHYP Элем имеет следующие классы: _2hvTZ pexuQ zyHYP

* 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...