尝试了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
未知地区 5F
我还可以确认您选择 用户名 输入元素正确。
如果你怀疑阴影DOM 干扰测试,调试IMO的最佳方法是
检查周围的DOM <;输入(>);
查找具有 #阴影根 下方(粗体)
更改测试以包括此父项
添加 .阴影() 命令家长突破障碍
cy.get(‘parent-with-shadow-root’)
.阴影()
.find(‘#用户名’)
这会调试并确认您的问题。其他一切,例如设置全局配置等,都可以在您知道需要处理什么后完成。
未知地区 4F
如果您的用户名字段位于阴影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’)
未知地区 3F
页面是否可能有默认命名空间?如果页面被用作XHTML,那么它可能有一个默认的XML命名空间,在这种情况下,输入的名称不仅仅是 输入.
如果这是问题所在,那么您可以声明 http://www.w3.org/1999/xhtml 命名空间并将其与前缀相关联,例如。 xhtml (我不知道柏树,所以不知道你会怎么做),然后询问 //xhtml:输入[@id=”用户名“]. 另一种方法是查询局部名称为的元素 输入 在任何命名空间中,例如。 //*[local-name()=“输入”][@id=“Username”]
未知地区 2F
大写字母可能是导致问题的原因。通常ID有一个小写字母。
尝试使用 数据gd 属性。
cy.get(‘[data-gy="identity-login-local-form-username"]’)
如果这不起作用,则在 <;输入(>); 这阻碍了搜索,在这种情况下,你可以像这样在阴影中搜索
it(‘tests the input’, {includeShadowDom:true}, () => {
cy.get(‘[data-gy="identity-login-local-form-username"]’)
})
我用大写字母测试 cy.get(“#用户名”) 和 cy.xpath(’//输入[@id=“Username”]) -两者都对我有效,所以很可能有阴影DOM或 <;框架(>); 在您的页面上。
未知地区 1F
下载xpath插件后,您是否添加了 需要(’cypress-xpath’) 在项目的cypress/support/index中。js文件?
根据您的示例,下面的代码应该可以找到 用户名
cy.xpath(‘//input[@id="用户名"]’)
cy.get(‘#用户名’)