【发布时间】:2018-12-10 13:46:13
【问题描述】:
我已经开始为一些回归测试实现 Cypress,并且我正在尝试在元素列表中查找特定元素。元素采用以下格式:
<div class="navigationIcon">
<input>
<div>
<img class="navigationImage" src="[image/path]">
<div class="navigationText">[navigation text]</div>
</div>
</div>
在一个页面上,有几个。我想尝试通过 [navigation text] 来定位特定对象,但它们可能具有相似的文本。我的主要示例是一个带有“个人资料”的示例,第二个带有“会员资料”的示例。所以,cy.contains("Profiles") 会给我“会员资料”元素而不是“资料”。
请记住,这是在函数中使用的,像这样:
Cypress.Commands.add('goTo', (places) =>
{
// Navigate to the places
});
其中“places”是要导航到的页面数组。所以,我不知道我要在函数中寻找的确切文本,比如and !text === 'Membership Profiles'。
有谁知道我如何通过 html 内容获取元素?这是我想出的功能:
Cypress.Commands.add('goTo', (places) =>
{
for (let i = 0; i < places.length; i++)
{
let place = places[i];
let navLinks = Cypress.$('.navigationIcon').toArray();
navLinks.some((link) =>
{
if (link.innerHTML.includes(`>${place.name}</div>`))
{
cy.wrap(link).click();
return true;
}
});
}
});
但这太快地进入下一个外部 for 循环迭代,第二次通过 navLinks 变量从上一次迭代中提取相同的元素。
赛普拉斯是否有内置功能可以让我通过 HTML 进行搜索?我一直在查看文档,但找不到任何东西。
【问题讨论】:
-
你应该给你的 html 数据属性,以便它们更加静态并且不太可能改变例如 data-name-it="navigiation-icon" 然后用 cy.get(' [data-name-it=navigation-icon')
标签: javascript cypress