Cypress Xpath:id的正确Xpath语法?它找不到它

susanml 测试交流7284字数 161阅读0分32秒阅读模式
摘要尝试了cy.get(#用户名),不起作用-cypress说它找不到它。它可能与大写字母有关吗? 安装Xpath插件并使用 cy.xpath('//输入[@id=“Username”...

尝试了cy.get(#用户名),不起作用-cypress说它找不到它。它可能与大写字母有关吗?

安装Xpath插件并使用
cy.xpath('//输入[@id=“Username”])但它不起作用。文章源自玩技e族-https://www.playezu.com/180081.html

<输入类型="电子邮件;等级=“”;表单控件“;自动完成="关闭“;数据gd=“”;身份登录本地表单用户名“;自动对焦=&quot&引用;数据值=”;“真实”;所需数据值="用户名字段是必需的&引用;id=“”;用户名“;名称=“”;用户名“;值=“”&引用&燃气轮机;文章源自玩技e族-https://www.playezu.com/180081.html

在给出-1之前,请解释我需要改进的地方。谢谢文章源自玩技e族-https://www.playezu.com/180081.html 文章源自玩技e族-https://www.playezu.com/180081.html

 
评论  7  访客  7
    • Mahmut Alban
      Mahmut Alban 9

      当模块由于某些异常而无法加载时,就会发生此错误。上面的错误消息应该提供额外的上下文。模块无法加载的一个常见原因是您忘记将文件包含在定义的模块中,或者无法加载文件。
      使用 天然气路线 在AngularJS中 1.2.0 后来,天然气路线被转移到自己的模块。如果升级到后出现此错误 1.2.x 或者稍后,请确保已安装 天然气路线.

      • Mitra A
        Mitra A 9

        在我尝试了一些建议,人们确认了我的xpath是正确的之后,我将注意力转移到了Cypress试图找到元素时出现的错误上。我犯的错误没有引起注意 例外https://stackoverflow.com/questions/53845493/cypress-uncaught-assertion-error-despite-cy-onuncaughtexception

        • TesterDick
          TesterDick 9

          我还可以确认您选择 用户名 输入元素正确。
          如果你怀疑阴影DOM 干扰测试,调试IMO的最佳方法是

          检查周围的DOM <输入(&gt);

          查找具有 #阴影根 下方(粗体)

          更改测试以包括此父项

          添加 .影子() 命令家长突破障碍

          cy.get(‘parent-with-shadow-root’)
          .影子()
          .find(‘#用户名’)

          这会调试并确认您的问题。其他一切,例如设置全局配置等,都可以在您知道需要处理什么后完成。

          • Alapan Das
            Alapan Das 9

            如果您的用户名字段位于阴影DOM下 这意味着其他字段也将在阴影Dom下,建议编写 includeShadowDom:true 在您的cypress配置文件中,以避免重复(柏树json 如果cypress版本<10; 柏树配置。js公司 如果cypress版本>10) ,然后直接使用命令:
            cy.get(‘#Username’).type(‘username-text’)

            如果您的用户名字段在iframe下,您可以获得cypress iframe插件

            安装 npm安装-D cypress iframe

            去 柏树/支持/命令。js公司 文件中,添加以下内容:

            import ‘cypress-iframe’;
            // or
            require(‘cypress-iframe’);

            在你的测试中:

            cy.iframe(‘#my-frame’)
            .find(‘#Username’)
            .should(‘be.visible’)
            .type(‘username-text’)

            • Conal Tuohy
              Conal Tuohy 9

              页面是否可能有默认命名空间?如果页面被用作XHTML,那么它可能有一个默认的XML命名空间,在这种情况下,输入的名称不仅仅是 输入.
              如果这是问题所在,那么您可以声明 http://www.w3.org/1999/xhtml 命名空间并将其与前缀相关联,例如。 xhtml (我不知道柏树,所以不知道你会怎么做),然后询问 //xhtml:输入[@id=”用户名“]. 另一种方法是查询局部名称为的元素 输入 在任何命名空间中,例如。 //*[local-name()=“输入”][@id=“Username”]

              • Fody
                Fody 9

                大写字母可能是导致问题的原因。通常ID有一个小写字母。
                尝试使用 数据gd 属性。
                cy.get(‘[data-gy="identity-login-local-form-username"]’)

                如果这不起作用,则在 <输入(&gt); 这阻碍了搜索,在这种情况下,你可以像这样在阴影中搜索
                it(‘tests the input’, {includeShadowDom:true}, () => {
                cy.get(‘[data-gy="identity-login-local-form-username"]’)
                })

                我用大写字母测试 cy.get(“#用户名”) 和 cy.xpath(’//输入[@id=“Username”]) -两者都对我有效,所以很可能有阴影DOM或 <框架(&gt); 在您的页面上。

                • Mahmut Alban
                  Mahmut Alban 9

                  下载xpath插件后,您是否添加了 需要(’cypress-xpath’) 在项目的cypress/support/index中。js文件?
                  根据您的示例,下面的代码应该可以找到 用户名
                  cy.xpath(‘//input[@id="用户名"]’)
                  cy.get(‘#用户名’)

                匿名

                发表评论

                匿名网友
                确定

                拖动滑块以完成验证