#javascript #copy #cypress
#javascript #Копировать #cypress
Вопрос:
Я борюсь с чем-то на работе. Я новичок, поэтому извините, если я спрошу что-нибудь простое. Я не смог найти его лично в Интернете, поэтому я надеюсь, что вы можете предоставить мне (легко понятную) информацию.
Я создаю автоматический тест. Я использую Cypress.
На моей работе мы имеем следующую ситуацию;
1) Имеется 1 файл. Мы хотим скопировать это. Итак, мы должны сначала посчитать начальное состояние (1 файл)
2) Мы скопируем этот файл
3) Теперь у нас есть 2 файла. Мы хотим посчитать, что действительно существует 2 файла
У меня есть следующий код для этого;
// count initialstate (1 file) =
let InitialStateCopy =
cy.getScoped('catalog-> item:case_type:link').contains('filename').should('have.length', 1 )
// press copy
// copy the file, execute actions here
// check if file is copied correctly (2 files)
let NewState =
cy.getScoped('catalog-> item:case_type:link').contains('filename').should('have.length', 2 )
Я получаю сообщение
CypressError: cy.contains() не может быть передан параметр длины, потому что он всегда возвращает только 1 элемент.
И я вижу, что Cypress находит только 1 элемент.
Кто-нибудь знает, как я могу посчитать, сколько там объектов? Какой код мне следует использовать для этого? В принципе, я просто хочу знать, как я могу подсчитывать элементы на странице.
Ответ №1:
cy.contains('blah')
автоматически подтвердит, что элемент, содержащий blah
, существует:
.contains()
автоматически повторит попытку до тех пор, пока элемент (ы) не будет существовать в DOM.
Таким образом, вам не нужно делать .should('have.length', 1)
, чтобы утверждать это. .contains
Сам выполняет неявное утверждение.
Cypress пытается предупредить вас, что .contains
возвращает только 1 элемент, поэтому вы, возможно, делаете что-то неправильно, если пытаетесь указать его длину. В этом случае вы пытаетесь утверждать, что это length
есть 2
, что невозможно.
Я не знаю, что у вас такое .getScoped
, но это просто использует обычный синтаксис CSS. Чтобы сделать то, что вы пытаетесь сделать, попробуйте этот селектор jQuery, который работает, потому что Cypress использует механизм селектора jQuery:
cy.get(".catalog .item:contains('filename')").should('have.length', 2)
Комментарии:
1. Ошибка: синтаксическая ошибка, нераспознанное выражение: [data-scope=»catalog-item:case_type:link:contains(«namefile»)»] ожидалось, что «будет иметь длину 2, но получил 0 Это код, который я использовал. Я полагаю, Cypress это не поддерживает?
2. @ErmanGultop ваш селектор выглядит неправильно. попробуйте
[data-scope="catalog-item:case_type:link"]:contains("namefile")
или:contains("namefile")[data-scope="catalog-item:case_type:link"]
3. Поддерживается: github.com/cypress-io/cypress/issues /…