当 Select 包含重复值时使用 Cypress select()

Und*_*ion 3 javascript testing select e2e-testing cypress

我需要在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>
Run Code Online (Sandbox Code Playgroud)

我正在选择这样的值:

cy.getSelect().select('gb')
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误:

CypressError:重试超时:cy.select() 通过值或文本匹配多个选项:gb

这是有道理的,因为 'UK' 的值是gb,它出现在列表的顶部和列表中按字母顺序排列的位置。

如何告诉赛普拉斯忽略重复值并选择第一个匹配项?

请注意,我不能保证任何国家的索引,而且我还有很多其他选择不同国家的测试。我需要一种方法来告诉 Cypress 选择第一个匹配项。

jpv*_*uyl 9

您可以尝试下拉到 jQuery/JavaScript 以手动设置该字段:

cy.get('select').then($country => {$country.val("gb")})
Run Code Online (Sandbox Code Playgroud)

$country上面的应该是一个jQuery对象包装您选择的HTML。

请参阅:https : //docs.cypress.io/api/commands/then.html#Syntax

  • 如果你想触发选择,那么你可以进一步这样做: cy.get('select').then($country =&gt; {$country.val("gb")}) .parent() .trigger( '改变') (3认同)