首页 > 解决方案 > 从命令行运行赛普拉斯测试失败,但如果从赛普拉斯测试运行程序运行则通过

问题描述

我正在尝试在搜索文本字段中搜索地点。输入地点名称时,系统将在搜索字段下显示地点的自动完成。我已经使用mousedowncypress 中的触发器编写了测试来获取自动完成项目。

 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 测试失败的地方,请参见下面以红色突出显示的屏幕截图

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: javascriptcypress

解决方案


我无法解释 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();

推荐阅读