尝试了cy.get(#用户名),不起作用-cypress说它找不到它。它可能与大写字母有关吗?
安装Xpath插件并使用
cy.xpath('//输入[@id=“Username”])但它不起作用。文章源自玩技e族-https://www.playezu.com/180081.html
<;输入类型=";电子邮件;等级=“”;表单控件“;自动完成=";关闭“;数据gd=“”;身份登录本地表单用户名“;自动对焦="&引用;数据值=”;“真实”;所需数据值=";用户名字段是必需的&引用;id=“”;用户名“;名称=“”;用户名“;值=“”&引用&燃气轮机;
文章源自玩技e族-https://www.playezu.com/180081.html
在给出-1之前,请解释我需要改进的地方。谢谢文章源自玩技e族-https://www.playezu.com/180081.html 文章源自玩技e族-https://www.playezu.com/180081.html
未知地区 7F
当模块由于某些异常而无法加载时,就会发生此错误。上面的错误消息应该提供额外的上下文。模块无法加载的一个常见原因是您忘记将文件包含在定义的模块中,或者无法加载文件。
使用 天然气路线 在AngularJS中 1.2.0 后来,天然气路线被转移到自己的模块。如果升级到后出现此错误 1.2.x 或者稍后,请确保已安装 天然气路线.
未知地区 6F
在我尝试了一些建议,人们确认了我的xpath是正确的之后,我将注意力转移到了Cypress试图找到元素时出现的错误上。我犯的错误没有引起注意 例外https://stackoverflow.com/questions/53845493/cypress-uncaught-assertion-error-despite-cy-onuncaughtexception
未知地区 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(‘#用户名’)