代码之家  ›  专栏  ›  技术社区  ›  opensas

cypress:css选择器,用于通过文本选择锚定

  •  0
  • opensas  · 技术社区  · 7 年前

    我开始玩了 cypress 我需要选择这样一个链接:

    <table cellSpacing="0" cellPadding="0" width="100%" border="0" class="ToolBarBkg">
      <tbody>
        <tr>
          <td class="ContentLeftLinks" align="right" width="98%" height="40" nowrap>
            &nbsp;
            <a href="javascript:FireEvent('Agregar')" style="COLOR: black; font-weight: normal" tabindex="-1">
              <IMG src="/metassc/images/toolbar/AltaOn.gif" align="absmiddle" border=0> Alta
            </a>
            &nbsp;
    
            <a href="javascript:FireEvent('Eliminar')" style="COLOR: black; font-weight: normal" tabindex="-1">
    
              <IMG src="/metassc/images/toolbar/BajaOn.gif" align="absmiddle" border=0> Baja
            </a>
    

    下列的 this page 我已经试过了:

    cy.contains('a[href~=Agregar]')
    cy.contains('a[href*="Agregar"]')
    cy.contains('a:contains("^Agregar$") ')
    cy.contains('a:contains("^Alta$") ')
    

    但它们似乎都不起作用。知道吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   kuceb    7 年前

    cy.contains() 也可以采用两个参数:

    cy.contains('a', 'Alta')
    

    这是第一个 a 包含文本的元素 Alta

        2
  •  1
  •   Dinesh Kumar    7 年前

    有一个很受欢迎的图书馆> cypress-testing-library

    这使得使用选择器非常容易 文本、标题、值、alt文本 等

    对于你的问题,你可以简单地使用 getByText 此库中的方法: cy.getByText('Agregar').click()

        3
  •  0
  •   opensas    7 年前

    这似乎有效,不得不使用 cy.get 而不是包含

    cy.get('a[href*="Agregar"]')
      .click()
    
        4
  •  0
  •   soccerway    7 年前

    另一种方法是,你可以深入到 <a> 标签通过 parent() 和 find() 柏树方法;

    cy.get('a:contains("Agregar")').parents('.ToolBarBkg').find('tbody').find('tr').find('td').find('a').contains("Agregar").click();