当 Select 包含重复值时使用 Cypress select()
Using Cypress select() When Select Contains Duplicate Values
我需要 select select
中的一个值。 select 是一个国家列表,显示它们的名称,每个选项的值是两个字母的国家代码。我们将 selected 最多的国家排在最前面,同时也将它们保留在字母顺序中。这意味着出现在顶部的项目会重复两次。
<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="us">UK</option>
...
</select>
我 select 的值是这样的:
cy.getSelect().select('gb')
但是,这会引发错误:
CypressError: Timed out retrying: cy.select() matched more than one option by value or text: gb
这是有道理的,因为 'UK' 的值是 gb
,它出现在列表的顶部和列表中的字母顺序位置。
如何告诉赛普拉斯忽略重复值和 select 第一个匹配项?
请注意,我不能保证任何国家/地区的索引,并且我还有很多其他 select 不同国家/地区的测试。我需要一种方法来告诉 Cypress select 第一场比赛。
这里有几个来源可供查看:
https://docs.cypress.io/api/commands/select.html#Text-Content&
https://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();
您可以尝试下拉至 jQuery/JavaScript 以手动设置字段:
cy.get('select').then($country => {$country.val("gb")})
上面的 $country
应该是一个 jQuery 对象包裹着您选择的 html。
我需要 select select
中的一个值。 select 是一个国家列表,显示它们的名称,每个选项的值是两个字母的国家代码。我们将 selected 最多的国家排在最前面,同时也将它们保留在字母顺序中。这意味着出现在顶部的项目会重复两次。
<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="us">UK</option>
...
</select>
我 select 的值是这样的:
cy.getSelect().select('gb')
但是,这会引发错误:
CypressError: Timed out retrying: cy.select() matched more than one option by value or text: gb
这是有道理的,因为 'UK' 的值是 gb
,它出现在列表的顶部和列表中的字母顺序位置。
如何告诉赛普拉斯忽略重复值和 select 第一个匹配项?
请注意,我不能保证任何国家/地区的索引,并且我还有很多其他 select 不同国家/地区的测试。我需要一种方法来告诉 Cypress select 第一场比赛。
这里有几个来源可供查看: https://docs.cypress.io/api/commands/select.html#Text-Content& https://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();
您可以尝试下拉至 jQuery/JavaScript 以手动设置字段:
cy.get('select').then($country => {$country.val("gb")})
上面的 $country
应该是一个 jQuery 对象包裹着您选择的 html。