如何使用赛普拉斯从下拉列表中选择随机项目?

时间:2020-10-24 16:30:44

标签: javascript drop-down-menu cypress

在网站https://www.testandquiz.com/selenium/testing.html中,这里有一个下拉列表 enter image description here

html如下:

<select id="testingDropdown">
<option id="automation" value="Automation">Automation Testing</option>
<option id="performance" value="Performance">Performance Testing</option>
<option id="manual" value="Manual">Manual Testing</option>
<option id="database" value="Database">Database Testing</option>
</select>

我想:

  1. 点击提及的下拉列表
  2. 计算项目数
  3. 从列表中选择随机项

如何处理使用柏树?

我尝试了以下方法,但测试失败

describe('Cypress.io tests', function() {
    it('Open cypress.io page', function() {
      var cypressPage = 'https://www.testandquiz.com/selenium/testing.html'
      
cy.visit(cypressPage)
     cy.xpath("//[@id='testingDropdown']").click();

    })
  })

2 个答案:

答案 0 :(得分:0)

为什么不使用.get()到达元素? 使用.children(),您可以在下拉列表中获取元素的数量。

cy.get('#testingDropdown').children() 

还是您希望将其作为变量?

答案 1 :(得分:0)

聚会有点晚了。

赛普拉斯不允许您对选择元素使用 click()。您将需要为此使用选择功能。 您还需要两个 xpath:

  1. 对于下拉元素
  2. 对于将随机选择的下拉选项。

这是工作代码

describe('Cypress.io tests', function() {
it('Open cypress.io page', function() {
  var cypressPage = 'https://www.testandquiz.com/selenium/testing.html';
  
cy.visit(cypressPage);
   // Get the array of options
   cy.xpath('//*[@id="testingDropdown"]//option').then(($elements) => {
  const randomOption = Math.floor(Math.random() * $elements.length);
  // select option from drop down
  cy.xpath('//*[@id="testingDropdown"]').select(`${$elements[randomOption].innerText}`);
  cy.log(`random option selected is ${$elements[randomOption].innerText}}`);
})
})