通过值断言 table 中的一行
Asserting a row in a table by a value
我目前正在为 Angular 应用程序开发一些端到端测试,我 运行 遇到了一些问题:
有一个 table,每一行在它的最后一个 td 中包含一个查看、编辑和删除按钮:
<td>
<button ng-click="credentialDetail({id:credential.id})"/>
<button ng-click="update(credential.id)"/>
<button ng-click="delete(credential.id)"/>
</td>
每行包含一个值,该值是显示对象的 ID。有没有办法让量角器点击正确行中的按钮?我尝试了以下但没有成功。
this.deleteCredential = (function(externalId){
$$('tr').each(function(rowElm, r) {
// Traverse cols
rowElm.$$('td').each(function(cellElm, c) {
// Workout cell
if (cellElm.getText() === externalId){
}
});
});
});
P.S。
我确实看过以下问题:
How to handle table data in Protractor
我认为这里的解决方案很接近,但是嵌套函数让我感到困惑
您可以找到删除按钮检查 ng-click
属性以 delete
开头。然后,使用 evaluate()
计算 credential.id
并检查它的值。
示例(找到 delete
按钮):
this.deleteCredential = (function(externalId) {
var deleteButtons = element.all(by.css('table td button[ng-click^=delete]')).filter(function (button) {
return button.evaluate('credential.id').then(function (id) {
return (id === externalId);
});
});
deleteButtons[0].click();
}
你可以试试
var someCell = element(by.xpath("//td/button[contains(@ng-click, 'update(ID#)')] "))
someCell.click()
您希望将 contains() 中的最后一个参数替换为所需的适当 function/ID 数字的位置。当你这样做时,你说 "find a button inside of a row that has ng-click with a value including the substring 'update(ID#)' "
如果你想对 属性 的值进行不同的比较,你也可以使用 matches() 等。有关更多信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/XPath/Functions
我目前正在为 Angular 应用程序开发一些端到端测试,我 运行 遇到了一些问题: 有一个 table,每一行在它的最后一个 td 中包含一个查看、编辑和删除按钮:
<td>
<button ng-click="credentialDetail({id:credential.id})"/>
<button ng-click="update(credential.id)"/>
<button ng-click="delete(credential.id)"/>
</td>
每行包含一个值,该值是显示对象的 ID。有没有办法让量角器点击正确行中的按钮?我尝试了以下但没有成功。
this.deleteCredential = (function(externalId){
$$('tr').each(function(rowElm, r) {
// Traverse cols
rowElm.$$('td').each(function(cellElm, c) {
// Workout cell
if (cellElm.getText() === externalId){
}
});
});
});
P.S。 我确实看过以下问题: How to handle table data in Protractor 我认为这里的解决方案很接近,但是嵌套函数让我感到困惑
您可以找到删除按钮检查 ng-click
属性以 delete
开头。然后,使用 evaluate()
计算 credential.id
并检查它的值。
示例(找到 delete
按钮):
this.deleteCredential = (function(externalId) {
var deleteButtons = element.all(by.css('table td button[ng-click^=delete]')).filter(function (button) {
return button.evaluate('credential.id').then(function (id) {
return (id === externalId);
});
});
deleteButtons[0].click();
}
你可以试试
var someCell = element(by.xpath("//td/button[contains(@ng-click, 'update(ID#)')] "))
someCell.click()
您希望将 contains() 中的最后一个参数替换为所需的适当 function/ID 数字的位置。当你这样做时,你说 "find a button inside of a row that has ng-click with a value including the substring 'update(ID#)' "
如果你想对 属性 的值进行不同的比较,你也可以使用 matches() 等。有关更多信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/XPath/Functions