Как правильно выбрать div с помощью xpath в огурце js? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь написать несколько тестов с использованием Cucumber JS. Мой веб-сайт построен на Vue и использует компоненты Vuetify. У меня есть раскрывающийся список, и мне нужно выбрать из него элемент. Vuetify генерирует компоненты по-своему, поэтому я написал простой код для выбора элемента:

  
Given ('I select {string} from {string} dropdown list', async function (selectedItem, listName) {
    await selectItemFromDropdownListAsync(selectedItem, listName);
});

const getWebElementByXpathAsync = async function (xpathSelector) {
    return await driver
        .findElement(By.xpath(xpathSelector));
}

const selectItemFromDropdownListAsync = async function (item, listName) {
    var listLabelHook = await 
        getWebElementByXpathAsync(`//label[contains(text(), '${listName}')]/parent::*`);
    listLabelHook.click();
    return driver
        .wait(until
            .elementLocated(By
                .xpath(`//div[contains(string(), '${item}')]`)), 500)
        .then(async function () {
            var listItemHook = 
                await getWebElementByXpathAsync(`//div[contains(string(), '${item}')]`);
            await listItemHook.click();
        });
}

//And my step: "And I select "Zmiana A" from "Zmiana" dropdown list" for a specific case described below

Код работает, но есть один случай, когда сгенерированный html немного странный и желаемый вариант не выбирается. Сгенерированный html выглядит так:

enter image description here

Код выполняется, тест проходит, но ни один из вариантов не выбран. Интересно, есть ли проблемы с символами новой строки, но я не знаю. Что я делаю не так? Как я могу улучшить функцию selectItemFromDropdownListAsyn c?

...