我需要在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="us">UK</option>
...
</select>
我正在选择一个这样的值:
cy.getSelect().select('gb')
但是,这会引发错误:
CypressError:超时重试:cy.select()通过值或文本匹配多个选项:gb
这很有意义,因为“ UK”的值为gb
,它出现在列表的顶部和列表中的字母顺序。
如何告诉赛普拉斯忽略重复值并选择第一个匹配项?
请注意,我无法保证任何国家/地区的索引,并且我还有许多其他测试会选择不同国家/地区。我需要一种方法来告诉赛普拉斯选择第一个比赛。
答案 0 :(得分:1)
您可以尝试下拉至jQuery / JavaScript手动设置字段:
cy.get('select').then($country => {$country.val("gb")})
上面的$country
应该是一个包含您所选择的html的jQuery对象。
答案 1 :(得分:-1)
以下是一些可供参考的资料: https://docs.cypress.io/api/commands/select.html#Text-Content& https://docs.cypress.io/api/commands/eq.html#Syntax
我建议尝试的方法如下:
<object width="550" height="500" data="http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&geocode=&q=Amber,+115+Portswood+Road,+Southampton,+SO17+2FX,+United+Kingdom&aq=0&sll=50.923556,-1.394663&sspn=0.006709,0.01929&vpsrc=6&ie=UTF8&hq=Amber,&hnear=115+Portswood+Rd,+Southampton+SO17+2,+United+Kingdom&t=m&ll=50.923178,-1.393676&spn=0.012985,0.027466&z=15&output=embed" type="text/html"></object>
要么
cy.get('select').select('gb').eq(0)
如果找到重复项,则这些选项中的任何一个都将抢占第一项。您可以使用cy.get('select').select('gb').first()
进行的其他操作包括,对于最后一项使用eq()
,对于第三项(以零为基数)则使用eq(-1)
,依此类推。
编辑:使用cy.get('select')代替cy.getSelect();