webdriverio Перебрать опции в элементе выбора

1

Пример HTML:

<select id="random_text">
    <option value="option1">asadka_TEST</option>
    <option value="option2">Peter Parker</option>
    <option value="option3">Clark Kent</option>
    <option value="option4">aldkfsd_TEST</option>
</select>

Код Javascript в классе

class TestPage extends Page {

    get fullNameSelect() {return browser.element('#random_text');}

    iterateAndSelect() {
        this.fullNameSelect.value.ForEach() //pseudo code
    }
}

Я хочу, чтобы функция iterateAndSelect перебирала все параметры и выбирала первый вариант, который заканчивается на "_TEST".

До сих пор я только выяснил, что есть действие selectByVisibleText но проблема в том, что я хочу выбрать опцию, основанную на условии, что значение заканчивается строкой "_TEST", и с этим действием я должен предоставить точное значение.

  • 1
    Я не знаком с Java-скриптом, но в случае, если вам нужен xpath, вы можете попробовать эту //option[ends-with(text(),'TEST')]
Теги:
loops
selenium
foreach
webdriver-io

3 ответа

0

Самый простой способ - найти индекс первого параметра, который заканчивается на _TEST:

const index = browser.getElements('option').findIndex(option => {
    return option.getText().endsWith('_TEST')
});

Затем вы можете выбрать это значение, используя этот индекс:

browser.getElement('select').selectByIndex(index);
0

Вот простой способ сделать это.

// get all options
const options = document.getElementById('random_text').children
// filter key test options
const tests = Object.keys(options).filter( i => options[i].text.indexOf('_TEST') > 0)
// run tests here
tests.map(i => {
  console.log(options[i].text)
})
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <select id="random_text">
    <option value="option1">asadka_TEST</option>
    <option value="option2">Peter Parker</option>
    <option value="option3">Clark Kent</option>
    <option value="option4">aldkfsd_TEST</option>
  </select>
</body>
</html>
-1

Вот код Webdriverio, который вы хотите попробовать:

class TestPage extends Page {

  get fullNameSelect() {return browser.elements("option");}

  iterateAndSelect() {
       var arr=[];

     this.fullNameSelect.value.forEach(function(elem) {

     var text=browser.elementIdText(elem.ELEMENT).value;
     if(text.endsWith('_TEST')) {
        arr.push(text); 
     }
     console.log(arr); // all texts that ends with _TEST
    });
 }
   }
module.exports = new TestPage();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню