我是使用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搜索似乎表明许多其他人都遇到了这个问题,尽管尝试了跟进,但我仍然没有成功。可能更多的是由于我的经验不足,但仍然无法解决。