使用赛普拉斯

时间:2020-10-29 20:48:24

标签: javascript automated-tests cypress

我是使用Cypress的新手,只是为我们的应用编写了一些基本测试以了解它的实际应用。但是,我遇到了一个尚无法解决或找到解决方案的问题;但是,乍一看,乍一看似乎相对简单。

导航到页面时,我们有几个select字段供用户更改,这将根据他们的选择更改div的文本。这些字段也onChange保存到我们的数据库中,因此当用户再次使用此对象时,我们可以预先填充这些字段。

当数据库中没有任何预先选择的选项时,select将正确设置为European Union, ,并且动态文本将得到测试和确认。

cy.get('#jurisdiction').select('European Union', { force: true })

// Assertion to confirm preview
cy.get('.ilPreviewDiv').invoke('text').then((text) => text.trim()).should('equal', 'text1, text2, text3, text4.')

然后,选择将正确切换到United States,动态文本的声明将始终失败。我什至试图延长超时时间;但是,它似乎没有什么不同,因为只要我设置了它,它实际上也不会等待。

cy.get('#jurisdiction', { timeout: 15000 }).select('United States', { force: true })
      
// Assertion to confirm preview
cy.get('.ilPreviewDiv').invoke('text').then((text) => text.trim()).should('equal', 'text1, text2, text3.')

我不确定为什么会发生这种情况,因为它看起来很简单,但是我显然做错了什么。除此之外,我还在下面放置了select字段代码。

<select name="jurisdiction" id="jurisdiction" class="" onchange="updateSelectedJurisdiction(33652); updateOptions(this);">
    <option value="">N/A</option>               
    <option value="United States">United States</option>                
    <option value="Canada">Canada</option>              
    <option value="European Union" selected="">European Union</option>          
    <option value="US and CA">US and CA</option>            
    <option value="US and EU">US and EU</option>                
    <option value="US, CA, and EU">US, CA, and EU</option>      
</select>

除此之外,如果数据库存储了European Union,则.select('United States')似乎成功;但是,select中的值不会改变,因此动态文本也不会更新,并且断言失败。

我们将不胜感激。非常感谢您能提供的任何帮助。

编辑: 如建议的那样,我尝试将.trigger('change')添加到.select()的末尾,现在却收到一条错误消息,说它失败了,因为元素已从DOM分离。快速的Google搜索似乎表明许多其他人都遇到了这个问题,尽管尝试了跟进,但我仍然没有成功。可能更多的是由于我的经验不足,但仍然无法解决。

0 个答案:

没有答案