Как получить первое вхождение элемента из нескольких совпадений, найденных в testcafe - PullRequest
1 голос
/ 11 апреля 2019

В некоторых случаях я вижу, что найдено несколько совпадений узлов, если я оцениваю свой Selenium xpath / locator.

Пример: // span [@ username = 'xyz'] (пример кода с использованием Selenium)

если вышеуказанный относительный путь совпадает с несколькими узлами (например: найдено 5 совпадающих узлов. Найдите список подходящих узлов ниже).

В селене я могу использовать например: (// span [@username)= 'xyz']) [1], который обращается к первому совпадению из 5 найденных совпадений.

Как мы можем добиться того же, используя TestCafe?

1 Ответ

3 голосов
/ 11 апреля 2019
import { Selector } from 'testcafe';

fixture `fixture`
    .page('https://devexpress.github.io/testcafe/example/');

const elementByXPath = Selector(xpath => {
    const iterator = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null )
    const items = [];

    let item = iterator.iterateNext();

    while (item) {
        items.push(item);
        item = iterator.iterateNext();
    }

    return items;
});

test('Click by first checkbox', async t => {
    const firstCheckboxSelector = Selector(elementByXPath('//input[@type="checkbox"]'));
    const secondCheckboxSelector = Selector(elementByXPath('//input[@type="checkbox"]')).nth(1);

    await t.click(firstCheckboxSelector);
}); 
...