从命令行运行时,赛普拉斯测试失败,但如果从赛普拉斯测试运行器运行,则通过

时间:2019-02-10 06:51:20

标签: javascript cypress

我正在尝试在搜索文本字段中搜索位置。输入地点名称时,系统将在搜索字段下显示地点的自动完成。我已经在赛普拉斯中使用触发器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标签。任何想法可能是该错误的原因吗?或任何其他稳定方式来获取自动完成项。

enter image description here

enter image description here

html中添加了从命令行运行时cypress测试失败的地方,请参见下面以红色突出显示的屏幕截图

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

我无法解释cypress:open和cypress:run的结果之间的差异(猜测是与内存有关的),但是您所显示的测试有些错误。

首先,要显示整个测试而不仅仅是一行-您很难通过显示片段代码来提供帮助。

{11, 12}后跟.trigger('mousedown',{ which: 1 })是多余的。使用一种方法或另一种方法。 .click()可以更好地从列表中进行选择。

考虑到最新信息,我将单击特定的文本内容,假设自动完成列表始终带有与输入“ Salis”相同的建议。

click()