javascript - 从命令行运行赛普拉斯测试失败,但如果从赛普拉斯测试运行程序运行则通过
问题描述
我正在尝试在搜索文本字段中搜索地点。输入地点名称时,系统将在搜索字段下显示地点的自动完成。我已经使用mousedown
cypress 中的触发器编写了测试来获取自动完成项目。
describe('Search for places', function() {
it.only('Verify the search is working fine', function() {
cy.visit('url')
cy.get('#search-button').click();
cy.get('input[type="text"]').type("Salis");
//cy.get('input[placeholder="Start typing a suburb, city, station or uni"]').parents('.form-container').find('div').find('div').find('input').type("Salis");
cy.contains('span', 'bury, Brisbane').click();
//cy.get('.input-autocomplete').find('div.row').eq(0).click();
cy.get('div:contains(" Flatmates")').parents('.search-modes').find('div').find('div').contains(" Flatmates").click();
cy.get('a:contains("+ Advanced filters")').parents('.show-advanced-wrapper').find('p').find('a').click();
cy.get('#search-submit > div').contains("Search Flatmates").click();
cy.get('.section-heading > div > h1').invoke('text').then((text)=>{
const stext = text;
expect(stext).to.equal('Salisbury Housemates & Roommates');
})
Cypress.on('uncaught:exception', (err, runnable) => {
// returning false here prevents Cypress from
// failing the test
return false
})
})
})
测试在 Cypress 测试运行程序 (UI) 中成功运行。但是在从命令行运行时,它会抛出CypressError: Timed out retrying: Expected to find element: '.input-autocomplete'
,但从未找到它。
在检查自动完成项的 html 时,它会消失自动完成项,因此无法获取正确的html
标签。知道该错误的原因是什么吗?或任何其他稳定的方式来获取自动完成项目。
添加了html
从命令行运行时 cypress 测试失败的地方,请参见下面以红色突出显示的屏幕截图
解决方案
我无法解释 cypress:open 和 cypress:run 的结果之间的区别(猜测它与内存有关),但你展示的测试有一些问题。
首先,显示整个测试而不仅仅是一行 - 通过显示零碎的代码真的很难提供帮助。
.trigger('mousedown',{ which: 1 })
其次.click()
是多余的。使用一种方法或另一种方法。click()
从列表中选择要好得多。
鉴于最新信息,我会去点击特定的文本内容,假设自动完成列表总是为输入“Salis”提供相同的建议。
cy.get('input').type('Salis'); // How do you type 'Salis'?
cy.contains('span', 'bury, Brisbane').click();
推荐阅读
- angular - 如何在 NestJS 中管理 Strategy 用户信息并在 Angular 中将其传递给客户端?
- sql - Amazon RDS - Postgres 不使用 SELECT 查询的索引
- swift - 替代案例 Swift
- flutter - 如何转换列表
Dart 中的字符串 - mysql - 在mysql数据库的所有表中搜索
- ios13 - 在 iOS13 上读取 ISO 15693 标签
- azure - 用于配置诊断设置的 Azure 网关 ARM 模板(Log Analytics 工作区)
- plot - 如果使用 Pine 脚本在 Tradingview 中的 5m 间隔图表的末尾有一个特定的小数说“.55”,如何标记今天的高点
- hyperledger - Indy - 更新凭证参数
- android - Android 应用程序在 WebView 膨胀时冻结