美文网首页
Cypress 查找元素的一些技巧

Cypress 查找元素的一些技巧

作者: BestFei | 来源:发表于2020-05-27 18:29 被阅读0次

一、通过控件各种属性查找
1、普通页面控件

<div class="well" data-cy="best-practices-selecting-elements">
          <button id="main" class="btn btn-large" name="submission" role="button" data-cy="submit">Submit</button>
</div>
<span class="pic001"><img src="...jpg" alt=""></span>

根据属性查找元素的写法

cy.get('span[class="pic001"]')
 // Bad. Coupled to styling. Highly subject to change.
 cy.get('.btn.btn-large').click()

  // Average. Coupled to the `name` attribute which has HTML semantics.
  cy.get('[name=submission]').click()

  // Better. But still coupled to styling or JS event listeners.
  cy.get('#main').click()

  // Slightly better. Uses an ID but also ensures the element
  // has an ARIA role attribute
  cy.get('#main[role=button]').click()

  // Much better. But still coupled to text content that may change.
  cy.contains('Submit').click()

  // Best. Insulated from all changes.
  cy.get('[data-cy=submit]').click()

2、列表元素

<ul role="listbox" class="" tabindex="0">
    <li role="option">
          <span class="sc-1193r1a-3">RMB</span>
    </li>
     <li role="option">
           <span class="sc-1193r1a-3">PESO</span>
     </li>
</ul>

获取RMB控件

cy.get('li[role="option"]').contains('RMB')

3、输入框

<input type="number"  placeholder="Type your Amount" font-size="16" color="white"  value="" >

获取根据placeholder属性获取输入框

cy.get('input[placeholder="Type your Amount"]').type('1.23')

4、按钮

<button>Confirm</button>
cy.get('button:contains("Confirm")').click({force: true})

5、.within() 在特定的DOM元素中找到元素

<form class="query-form">
                <input type="text" id="inputEmail" class="form-control" placeholder="Email">
                <input type="text" id="inputPassword" class="form-control" placeholder="Password">
</form>

代码实现

cy.get('.query-form').within(() => {
  cy.get('input:first').should('have.attr', 'placeholder', 'Email')
  cy.get('input:last').should('have.attr', 'placeholder', 'Password')
})

二、通过父子元素关联查找

<ol class="traversal-breadcrumb breadcrumb">
            <li><a href="#">Home</a></li>
            <li><a href="#">Library</a></li>
            <li class="active">Data</li>
</ol>

查找Data

cy.get('.traversal-breadcrumb').children('.active').should('contain', 'Data')

三、通过兄弟元素关联查找
html

<input data-bn-type="input" name="amount" value="">
<label>Amount</label>
<div>
      <div data-bn-type="text">Price:</div>
      <div data-bn-type="text">10.00&nbsp;RMB</div>
</div>
<div>ss</div>

查找

    cy.get('input[name="amount"]').siblings().within(() => {
        cy.get('div').last().invoke('text').then((text) => {
            console.log(text)
            const con = text.split(/\s+/)
            expect(con[0]).to.eq(amount)
        })
    }) 

分步解析
cy.get('input[name="amount"]').siblings()获取

<label>Amount</label>
<div>
      <div data-bn-type="text">Price:</div>
      <div data-bn-type="text">10.00&nbsp;RMB</div>
</div>
<div>ss</div>

cy.get('input[name="amount"]').siblings().within()获取

<label>Amount</label>
<div>
      <div data-bn-type="text">Price:</div>
      <div data-bn-type="text">10.00&nbsp;RMB</div>
</div>
<div>ss</div>

cy.get('input[name="amount"]').siblings().within(() => { cy.get('div') })获取

      <div data-bn-type="text">Price:</div>
      <div data-bn-type="text">10.00&nbsp;RMB</div>

cy.get('input[name="amount"]').siblings().within(() => { cy.get('div').last() })获取

<div data-bn-type="text">10.00&nbsp;RMB</div>

四、实战
1、查找【图片】和【视频】


        cy.visit('https://cn.bing.com/', { timeout: 3000})

        cy.get('#scpl0').invoke('text').then((text)=>{
                    cy.log("查找【图片】方法一,text is "+text)
                }
            )

        cy.get('.sw_tb').get('ul li:first').invoke('text').then((text)=>{
                cy.log("查找【图片】方法二,text is "+text)
            }
        )
        
        cy.get('.sw_tb').get('ul li:first').next().invoke('text').then((text)=>{
                cy.log("查找【视频】,text is "+text)
            }
        )

2、查找【国内版】和【国际版】


        cy.get('#est_switch').within(() => {
            cy.get('div').eq(0).contains('国内版')
            cy.get('div').eq(1).contains('国际版')
        })

3、定位元素Confirm按钮


cy.contains('Are you sure you want to cancel all?').siblings().within(() => {
              cy.get('button').contains('Confirm').click()
            })

相关文章

  • Cypress 那点事

    Cypress 初体验Cypress 测试用例的一些编写技巧Cypress 查找元素的一些技巧Cypress Ex...

  • Cypress 查找元素的一些技巧

    一、通过控件各种属性查找1、普通页面控件 根据属性查找元素的写法 2、列表元素 获取RMB控件 3、输入框 获取根...

  • Cypress 基础 - 元素的定位

    Cypress basics: Selecting elements[https://filiphric.com/...

  • 2020 算法列表查找

    列表查找 在列表中查找指定元素。 输入为列表和要查找的元素 输出元素下标或未查找到元素 顺序查找 从列表第一个元素...

  • js

    1.元素间关系查找 1)父子关系 parentElement; 查找一个元素的父元素children;查找一个元素...

  • JavaScript基础 --- DOM操作

    一、查找HTML元素 1、通过 id 查找 HTML 元素在 DOM 中查找 HTML 元素的最简单的方法,是通...

  • 2018.7.21

    DOM之间的查找 通过元素间的关系查找 (1).父子关系 parentElement 查找一个元素的父元素 用法:...

  • ( థ ౪ థ)梅西踢走我一套房

    DOM之间的查找 通过元素间的关系查找 (1).父子关系 parentElement 查找一个元素的父元素 用法:...

  • 查找元素

    查找某个元素在数组中位置 indexOf()方法

  • 查找元素

    (1)、根据类名查找标签(返回的是所有拥有该类名的元素) document.getElemen...

网友评论

      本文标题:Cypress 查找元素的一些技巧

      本文链接:https://www.haomeiwen.com/subject/ghrgahtx.html