我需要在select
中选择一个值。select是一个国家列表,显示它们的名称,每个选项的值都是一个两个字母的国家代码。我们将最常选择的国家显示在顶部,同时将它们保留在字母位置。这意味着显示在顶部的项目会重复两次。
<select>
<option value="gb">UK</option>
<option value="us">USA</option>
<option value="af">Afganistan</option>
<option value="ai">Aland Islands</option>
...
<option value="us">USA</option>
<option value="gb">UK</option>
...
</select>
我选择的值如下所示:
cy.getSelect().select('gb')
但是,这会引发错误:
Cypress错误:重试超时:cy.select()通过值或文本匹配多个选项:国标
这是有意义的,因为'UK'的值是gb
,它出现在列表的顶部,并在列表中按字母顺序排列。
如何让Cypress忽略重复值并选择第一个匹配项?
请注意,我不能保证任何国家的指数,我有很多其他的测试,选择不同的国家。我需要一种方法来告诉Cypress选择第一个匹配。
3条答案
按热度按时间f0ofjuux1#
您可以尝试下拉到jQuery/JavaScript来手动设置字段:
上面的
$country
应该是一个jQuery对象,它封装了您选择的html。请访问:https://docs.cypress.io/api/commands/then.html#Syntax
o8x7eapl2#
以下是一些可供参考的来源:https://docs.cypress.io/api/commands/select.html#Text-Contenthttps://docs.cypress.io/api/commands/eq.html#Syntax
我建议您沿着以下方法:
cy.get('select').select('gb').eq(0)
或cy.get('select').select('gb').first()
如果发现重复项,这两个选项中的任何一个都将获取第一项。您可以对
eq()
执行的其他操作是eq(-1)
用于最后一项,或eq(2)
用于第三项(基数为零),依此类推。编辑:使用cy.get('select')代替cy.getSelect();
w7t8yxp53#
Cypress为
cy.select()
增加了一些功能,现在可以按位置选择。使用
us
值进行测试,因为gb
是默认选定值(它位于列表顶部)