我选择了这个特殊的元素。我有一系列tr元素,我需要根据其中的内容选择一个。下面是一个简化的树,其中包含可能使用的选择器:
<tr data-test="FEE_SELECTOR_FEE_ROW">...</tr>
<tr data-test="FEE_SELECTOR_FEE_ROW">...</tr>
<tr data-test="FEE_SELECTOR_FEE_ROW">
<td>
<input data-test="FEE_SELECTOR_FEE_NAME" ng-reflect-model="Doc">
</td>
</tr>
<tr data-test="FEE_SELECTOR_FEE_ROW">
<td>
<input data-test="FEE_SELECTOR_FEE_NAME" ng-reflect-model="Admin">
</td>
</tr>
因此,在这种情况下,我希望根据传递给函数的对象来选择包含“ Admin”或“ Doc”的tr。下面的代码段:
export function selectOptionsFees(options: E2EOptionsFees[]) {
cy.getDataTestTag(DataTestTags.OPTIONS_FEES_SUMMARY).first().click();
options.forEach((option: E2EOptionsFees) => {
cy.getDataTestTag(DataTestTags.FEE_SELECTOR_FEE_ROW)
.contains('tr', option.name)
.within(() => {
“内容”行是我被卡住的地方,而option.name对应于上面html中的“ Doc”或“ Admin”。到现在为止,所有其他情况都在输入中包含了文本,因此上面的代码可以正常工作,但这使我很困惑。
编辑:我明白了!万一其他人遇到这种情况,请经常查找jQuery文档。事实证明,它比赛普拉斯的文档要好得多(赛普拉斯的人没有错,他们的确表明它搭载在jQuery上)。这就是全部步骤:
cy.get(`[data-test=FEE_SELECTOR_FEE_NAME][ng-reflect-model="${option.name}"]`)
答案 0 :(得分:0)
您可以尝试匹配ng-reflect-model属性:
cy.getDataTestTag(DataTestTags.FEE_SELECTOR_FEE_ROW)
.find(`tr input[ng-reflect-model="${option.name}"]`)
答案 1 :(得分:0)
另一种解决方案可能是使用“have.attr”检查属性:
cy.getDataTestTag(DataTestTags.FEE_SELECTOR_FEE_ROW)
.should('have.attr', 'ng-reflect-model', option.name)