cypress(一)元素定位的常见问题解决方法
- 
动态ID/class 这种情形下,无法使用传统的定位方式直接定位,但是可以通过其他方式: cy.xpath("//*[starts-with(@id,'MultipleTextBox')]") //找id以MultipleTextBox开头的元素cy.xpath("//*[ends-with(@id,'Box')]") //找id以Box结尾的元素cy.xpath("//div[contains(text(),'总计')]" //找内容中包含“总计”的元素
- 根据xpath定位到了多个元素,只想获取其中一个
- 获取的元素后用first(),来获取第一个元素
 1 cy.xpath("//td[text()='order12345678']").first()
- 如果想要获取第二个或第三个,可以用eq(指定序号),注意序号是从0开始
 //根据xpath可以得到多个元素,eq(1)是获取第二个 cy.xpath("//*[starts-with(@id,'MultipleTextBox')]").eq(1)
- 用last()来获取最后一个元素
 cy.xpath("//*[starts-with(@id,'MultipleTextBox')]").last()
 
- 获取的元素后用first(),来获取第一个元素
如果确定表达式写的没有问题,就是定位不到,怎么办?
以下均以cypress为例:
- 
增加等待时间 1 cy.wait(10000) 
- 
查看是否在不同的frame中 
 cypress如果要使用iframe: 元素被隐藏了- 需要先安装iframe插件
 1 npm install --save-dev cypress-iframe 
-  在cypress\support\commands.js中添加引用
 1 require('cypress-iframe')
-  在js代码中,按照以下方式调用:
 1 cy.iframe().find('#username').type("test")
 
- 需要先安装iframe插件
- 
最近测试的产品中,要定位左侧菜单的输入框,但是左侧菜单是鼠标移动过去才会显示的,所以用到了trgger模拟鼠标操作 1 cy.get('#navigator').should('not.be.visible') 2 cy.xpath('/html/body/div[4]').trigger("mouseover") 3 cy.get('#navigator') 4 .should('be.visible')
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号