Cypress Xpath:id的正确Xpath语法?

玩技站长 测试交流5255字数 118阅读0分23秒阅读模式

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

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

&;书信电报;输入type=“email”class=“form control”autocomplete=“off”data gd=“identity login local form username”autofocus=“data val=“true”所需数据val=”用户名字段是必需的。”id=“Username”name=“Username”value=“&;燃气轮机文章源自玩技e族-https://www.playezu.com/179037.html

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

 
评论  5  访客  5
    • 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(‘#用户名’)

            匿名

            发表评论

            匿名网友
            确定

            拖动滑块以完成验证