Cypress: Нахождение количества элементов без ошибок - PullRequest
1 голос
/ 25 июня 2019

Мне нужно найти количество элементов, присутствующих на веб-странице с указанным локатором (cy.get () или cy.xpath ()).Если элемент отсутствует в указанном локаторе, то он не должен проваливать тест.

Я пробовал cy.get (), cy.find (), cy.xpath (): все они терпят неудачутест, если элемент не найден на веб-странице.Я пытался использовать cy.get ('body'). Find ('loc'). Length;Но это также не проходит тест.

Приведенный ниже код работает, но я не могу использовать значение x вне цикла.И сценарий таков, что я не могу поместить весь свой код в then ().

let x = 0;
 cy.get("body").then(($body) => {
 x = $body.find("element").length;
 cy.log(`inside then: `,x);
})
cy.log(`outside then: `,x);

Ожидается: внутри then:, 1 снаружи then:, 1

Actual: inside then:, 1 снаружи тогда:, 0

Ответы [ 3 ]

1 голос
/ 25 июня 2019

Вы можете попробовать использовать функцию .its() для получения значения length свойство:

cy.get("body").its("length");
0 голосов
/ 25 июня 2019

Не ясно, чего вы хотите достичь, но я предполагаю, что вы хотите проверить общее количество доступных элементов. И если нет, то не следует из-за ошибки. Если это правильно, то это может помочь:

let x = 0;
function anyName() {
  return cy.get("body").then($body => {
    x = $body.find("element").length;
    if (x > 0) {
      cy.log(`Total no of elements found: ${x}`);
    } else {
      cy.log("Element is not available");
    }
  });
}
anyName();
0 голосов
/ 25 июня 2019
let x = 0;
 cy.get("body")
.then( 
  ($body) => {
  x = $body.find("element").length;
  cy.log(`inside then: `,x);
})
.then( 
  () => {
  cy.log(`outside then: `,x);
} )

Вам нужно дождаться обновления x в x = $ body.find ("element"). Length;Eventloop выглядит так:1. пусть х = 0;2. cy.log («за пределами:», x);- х = 0;3. x = $ body.find ("element"). Length;4. cy.log («внутри тогда:», х);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...