如何单击赛普拉斯下拉菜单中的所有选项?

时间:2020-08-06 14:57:46

标签: automation cypress

我想单击下拉菜单中的国家/地区,然后获取每个国家/地区的用户数。当我单击下拉列表中的国家时,它将显示用户数。我想我可以遍历然后获取它们,但不确定如何去做。 可以使用for循环并使用索引来单击元素,或者使用国家名称创建一个数组并使用它们来单击?

<div class="dropdown-menu open" style="max-height: 222px; overflow: hidden;">
  <ul class="dropdown-menu inner" role="menu" aria-label="Dropdown" style="max-height: 222px; overflow-y: auto;">
    <li data-original-index="0" class="">
      <a tabindex="0" class="" style="" data-tokens="null">
        <span class="text">All countries </span>
        <span class="glyphicon glyphicon-ok check-mark"></span></a></li>
    <li data-original-index="1" class="">
      <a tabindex="0" class="" style="" data-tokens="null">
        <span class="text">Belgium</span>
        <span class="glyphicon glyphicon-ok check-mark"></span></a></li>
    <li data-original-index="2">
      <a tabindex="0" class="" style="" data-tokens="null">
        <span class="text">Sweden</span>
        <span class="glyphicon glyphicon-ok check-mark"></span></a></li>
    <li data-original-index="3">
      <a tabindex="0" class="" style="" data-tokens="null">
        <span class="text">Hungary</span>
        <span class="glyphicon glyphicon-ok check-mark"></span></a></li>
    <li data-original-index="4">
      <a tabindex="0" class="" style="" data-tokens="null">
        <span class="text">Germany</span>
        <span class="glyphicon glyphicon-ok check-mark"></span></a></li>
    </ul></div>

1 个答案:

答案 0 :(得分:1)

请尝试以下方式获取元素集合并遍历已包装的jQuery元素。有关更多详细信息,请参考Cypress Iterate over an array of DOM elements。我不确定您是否可以在提供的DOM之上找到唯一的类或ID,如果存在,请相应地更改“ div.dropdown-menu.open> ul> li> a> span.text” css选择器。 / p>

将类名称添加到CSS选择器时,如果类名称包含空格“ ex:class name”,则将“ space”替换为“。”。 (例如:class.name)。看起来像('div.class.name> div.dropdown-menu.open> ul> li> a> span.text')

cy
  .get('div.dropdown-menu.open > ul > li> a > span.text')  //This will create countries element collection
  .each(($el, index, $list) => {
    //<<Add here the drop down expand element click action>>
    // $el is a wrapped jQuery element, wrap this element so we can use cypress commands on it
    cy.wrap($el).click()
  })