Наилучшим вариантом на данный момент, вероятно, является использование этой команды .shouldNotBeClickable () , поскольку, если элемент нельзя щелкнуть, он также не может быть перемещен.Используйте эту команду с осторожностью, так как пропускает все остальные команды в вашем блоке it()
при использовании из-за ошибки в Cypress.
На данный момент (Cypress 3.1.0) это невозможно.Это должно быть в соответствии с этим ответом , но cy.once()
имеет некоторые ошибки, приводящие к нарушению кода, с которыми я столкнулся, пытаясь адаптировать команду в этом ответе.
СледующееПользовательская команда не работает с Cypress 3.1.0.Он должен работать, но вызывает зависание Cypress.
index.js:
Cypress.Commands.add("shouldNotBeHoverable", {
prevSubject: true
}, function(subject) {
let errorMessage = "shouldNotBeHoverable: element hover succeeded, but it souldn't have";
let done = false;
cy.wrap(subject[0]).trigger('mouseover', { force: true });
cy.once('fail', (err) => {
if (err == errorMessage)
throw errorMessage;
expect(err.message).to.include('cy.trigger() failed because this element');
expect(err.message).to.include('is being covered by another element');
done = true;
});
cy.wrap(subject[0]).trigger('mouseover', {timeout: 1000});
cy.get('html').then(() => {
if (!done)
throw errorMessage;
});
});
Тест Cypress:
cy.get("#selector").shouldNotBeHoverable();
Связанные проблемы Github связаны ниже.Об этой конкретной проблеме не сообщается, но обе проблемы достаточно похожи, поэтому я подозреваю, что основная причина одна и та же.
Смешивание cy.on () / cy.once () с одним аргументомФункция it () приводит к зависанию теста
Команды, помещенные в очередь, автоматически пропускаются при использовании cy.once () в пользовательской команде