我正在尝试在搜索文本字段中搜索位置。输入地点名称时,系统将在搜索字段下显示地点的自动完成。我已经在赛普拉斯中使用触发器mousedown
编写了测试,以获取自动完成项。
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
})
})
})
该测试在赛普拉斯测试运行器(UI)中成功运行。但是,从命令行运行时,它抛出CypressError: Timed out retrying: Expected to find element: '.input-autocomplete'
,但没有找到它。
在检查自动完成项的html时,它会消失自动完成项,因此无法获取正确的html
标签。任何想法可能是该错误的原因吗?或任何其他稳定方式来获取自动完成项。
在html
中添加了从命令行运行时cypress测试失败的地方,请参见下面以红色突出显示的屏幕截图
答案 0 :(得分:2)
我无法解释cypress:open和cypress:run的结果之间的差异(猜测是与内存有关的),但是您所显示的测试有些错误。
首先,要显示整个测试而不仅仅是一行-您很难通过显示片段代码来提供帮助。
{11, 12}
后跟.trigger('mousedown',{ which: 1 })
是多余的。使用一种方法或另一种方法。 .click()
可以更好地从列表中进行选择。
考虑到最新信息,我将单击特定的文本内容,假设自动完成列表始终带有与输入“ Salis”相同的建议。
click()