Как я могу навести курсор на элемент, а затем нажать с помощью Cypress - PullRequest
2 голосов
/ 26 февраля 2020

Я хочу навести курсор на кнопку «Моя учетная запись», и во всплывающем окне нажмите кнопку «Вход». Я пробовал приведенный ниже код, но он не работал. Кто-нибудь знает способ справиться с этой ситуацией? Спасибо,

 Cypress.Commands.add('loginol', (email, password) => { 
     cy.get('#myAccount').click()
     cy.get('#myAccount').trigger('mouseover')
     cy.wait(3000)
     cy.get('#login').click()
     cy.get('#email').type(email)
     cy.get('#password').type(password)
     cy.get('.btn.full.btn-login-submit').click()

 })

Я загрузил фотографии на случай, если это поможет:

Кнопка "Giriş Yap (My Account)"

После того, как она находится под кнопкой «Giriş Yap (Login)» After it is hovered below

Сайт, на котором я работаю: https://www.hepsiburada.com/

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

У вас нет уникальных идентификаторов, присвойте уникальные идентификаторы своим элементам

Из исходного кода вашего сайта:

duplicate id's

Так что же происходит, когда вы запускаете указатель мыши на виджете, первом элементе myAccount, контейнере виджета. Для этого элемента у вас нет связанных событий, они связаны со вторым элементом, помеченным id="myAccount"

Идентификатор должен быть уникальным

Для разрешения make идентификатор вашей кнопки что-то вроде id="myAccount_button" и укажите его в тестовом скрипте.

Ниже приведен фрагмент, имитирующий ваш веб-сайт. Меню не отображается.

$('#myAccount').trigger('onmouseover');
#menu {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myAccount">
  <div id="myAccount" onmouseover="$('#menu').show()" onmouseout="$('#menu').hide()">
     my account
  </div>
</div>
<div id="menu">
a<BR/>
c<BR/>
d<BR/>
e<BR/>
</div>

Это фрагмент кода с исправлением. Как видите, здесь отображается меню, потому что идентификатор уникален и может быть нацелен.

$('#myAccount_button').trigger('onmouseover');
#menu {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myAccount_wrap">
  <div id="myAccount_button" onmouseover="$('#menu').show()" onmouseout="$('#menu').hide()">
     my account
  </div>
</div>
<div id="menu">
a<BR/>
c<BR/>
d<BR/>
e<BR/>
</div>
0 голосов
/ 26 февраля 2020

// кипарис не знает, как парить, поэтому вызовите метод '1005 * * show', который заставит меню стать видимым

cy.get('#myAccount').invoke('show');

, который работал для меня.

...