Используя функцию для добавления в существующий xpath? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть этот пример html, для которого в POM определены следующие xpaths:

<button>
    Foo
    <i class="myClass" label="a label">Something</i>
</button>
<button>
    Bar
    <i class="myClass" label="another label">Something</i>
</button>
class myPage {
    constructor() {
        this.fooButton = () => $('//button[text()=\'Foo\']');
        this.barButton = () => $('//button[text()=\'Bar\']');
    }
}

Я хочу получить доступ к внутреннему тексту из iframe myClass, но не не хочу определять новые элементы конструктора для него - похоже на повторение кода:

this.insideSomething = () => $('//button[text()=\'Foo\']/i[text()=\'Something\']');

Есть ли способ, возможно, только определить конец xpath в его собственной функции? Примерно так:

somethingText(parentElement) {
     return parentElement + '/i[text()=\'Something\']';
}

... так что я могу назвать это так, например: expect(somethingText(MyPage.FooButton).isDisplayed()).to.be.true;

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете попробовать использовать оператор селектора атрибутов «начинается с» ^=:

this.fooButton = () => $('//button[text()^=\'Foo\']');

Дополнительная информация о селекторах атрибутов

...