【发布时间】:2018-06-09 13:25:36
【问题描述】:
这正是我想要做的事情
我打开一个页面,其中包含一个包含用户信息的表格
我 getText() 的元素表示表中的用户数量(例如“列表中的 11 个用户”)
我删除“列表中的用户”部分并将字符串转换为整数,以便稍后在 for 循环中使用
我需要通过用户名(第 9 列)找到某个用户并获取 j 数字,这是该用户信息所在的行数(这是我卡住的地方)
我转到j 行的第一列(它将是该特定用户的编辑按钮)并单击它以验证用户的类型
我尝试过的代码示例
it("Validation of ND account", function() {
//login
element(by.id("j_username")).sendKeys($usernameND);
element(by.id("j_password")).sendKeys($passwordND);
element(by.buttonText("Login")).click();
//navigate to a page with list of users displayed in a table
element(by.xpath('//a[@short-title="Users"]')).click();
//narrow the search result by typing 'testuser'
element(by.model("userList.searchBox.options.query")).sendKeys($usernameND);
//the table has 11 results such as 'testuser', 'testuser1', 'testuser2'
//I get text of element with text '11 users in list' to get just the number out of it
element(by.xpath('//div[@viewid="userList"]//div[@class="results-count ng-binding"]')).getText().then(function(numberOfUsers) {
numberOfUsers = Number(numberOfUsers.replace(" Users in list",""));
// declare a variable which will be responsible for accessing to j row in a table
var j=1
//I search through 11 rows from the table for my username
for (i=1; i<numberOfUsers; i++) {
element(by.xpath("(//td[@data-field='username'])["+j+"]")).getText().then(function(username){
if (username===$usernameND){
console.log("true");
console.log(j);
j++
} else {
console.log("false");
j++
}
});
}
});
});
这是我得到的
true
1
true
2
true
3
true
4
true
5
true
6
true
7
true
8
true
9
true
10
所以它确实计数但总是返回 true,即使用户名不同(似乎每次都检查第一行)。我尝试另一种方法
element(by.xpath('//div[@viewid="userList"]//div[@class="results-count ng-binding"]')).getText().then(function(numberOfUsers) {
numberOfUsers = Number(numberOfUsers.replace(" Users in list",""));
for (i=1; i<numberOfUsers; i++) {
element(by.xpath("(//td[@data-field='username'])["+i+"]")).getText().then(function(username){
if (username===$usernameND){
console.log("true");
console.log(i);
} else {
console.log("false");
}
});
}
});
我明白了
true
11
false
false
false
false
false
false
false
false
false
现在它访问每一行并且似乎没问题,但是在第一行它返回数字 11。有什么问题?如何解决?
附:我将举例说明我在做什么 screenshot of the page 我想找到我的用户并单击与之关联的“编辑”按钮。我可以简单地单击第一列第 6 行中的一个单元格。但我想让它可靠,以防添加更多用户。为此,我需要搜索用户名列,记录该用户在表中所在的行号,然后导航到我找到的行号上第一列中的一个单元格。
【问题讨论】:
标签: javascript angularjs automation protractor