Это может быть простой вопрос или что-то, что невозможно сделать. Но я считаю, что помощь Cypress в сети немного «отстает» от ресурсов Selenium. Более того, будучи Java-программистом, я немного пытаюсь понять, что я могу и чего не могу делать в TypeScript (а также в Cypress по сравнению с Selenium).

Возможно ли вообще в Cypress (и TypeScript) получить массив WebElements из такого кода?

<div id="row-123">
   <span id="comment">
   <button id="purge>
   <input id="comment">
</div>
<div id="row-456">
   <span id="comment">
   <button id="purge>
   <input id="comment">
</div>
<div id="row-789">
   <span id="comment">
   <button id="purge>
   <input id="comment">
</div>

Я пытаюсь с этим:

var rows = Array(cy.get('*[id^="row"]'));

Но когда я пытаюсь указать длину массива rows [], он утверждает, что он равен 1, а не 3. Так что это не работает так, как я думал.

В Java и Selenium я бы сделал что-то вроде этого:

List<WebElement> rows = driver.findElements(By.id("^row"));

Затем я мог бы использовать, например, Stream () для синтаксического анализа каждого элемента в класс, который затем обращался к (под) элементам внутри него. И так далее. Но мне сложно это сделать в Cypress?

2
Hfrav 9 Дек 2020 в 15:37

1 ответ

Лучший ответ

Вы можете использовать each () для итерации по массиву, подобному структуре (массивы или объекты со свойством длины).

let idArray = []
cy.get('*[id^="row"]').each(($el, index, $lis) => {
    //Find element based on InnerText
    if ($el.text() == 'text') {
        //Do something  
    }
    //Find element based on index position
    if (index == 1) {
        //Do something
    }
    //Save the id in the idArray
    cy.wrap($el).invoke('attr', 'id').then((val) => {
        idArray.push(val);
    })
}).then(($lis) => {
    expect($lis).to.have.length(3)
})

Согласно обсуждению, способ перебрать несколько tr и td и найти нужный элемент на основе innerText, а затем предпринять некоторые действия:

cy.get('tr').each(($el, index, $lis) => {
    cy.get('td').each(($el) => {
        if ($el.text() == 'text') {
            cy.log('Element found')
            return
        }
    })
})
1
Alapan Das 9 Дек 2020 в 15:39