在我的代码中有一个使用“protractor.By.repeater”选择的元素列表(tr)。
该列表使用“forEach”循环。
在这个循环中,元素被点击,这个点击应该在被点击的元素之后触发包含一个新的“tr”。
我想选择那条新线。
我用了 :
var nextRow = tr.$(protractor.By.xpath('following-sibling::tr'));
但随后:
nextRow.isDisplayed(function(row){
console.log('row', row);
});
它会生成错误,例如:“UnknownError:java.util.HashMap 无法转换为 java.lang.String”
有没有另一种方法来实现我想要的,即选择当前元素的下一个兄弟?
或者我在那里写了不正确的东西?
谢谢你的帮助!
最佳答案
看起来您缺少一个 .then
那里并误解了什么 isDisplayed做。
代码应该更像:
nextRow.isDisplayed().then(function(visible) {
console.log('is displayed? ', visible);
});
还有您的 ElementFinder
nextRow
看起来不太好,什么是变量tr
以下?和 Protractor $
是 element(by.css
的别名在您的代码中,它采用字符串参数,而不是像您在下面解释的 webdriver.Locator :var nextRow = tr.$(protractor.By.xpath('following-sibling::tr'));
所以也许你的意思是:
var tr = $('table tr.first'); // just guessing here since you didn't provide that code
var nextRow = tr.element(By.xpath('following-sibling::tr'));
关于angularjs - Protractor - 选择当前元素的下一个兄弟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25390171/