Javascript 如何使用量角器循环一组元素并测试它们是否可单击
我需要测试页面上的按钮列表是否显示并启用。首先,我使用elements.all收集所有元素Javascript 如何使用量角器循环一组元素并测试它们是否可单击,javascript,selenium,selenium-webdriver,promise,protractor,Javascript,Selenium,Selenium Webdriver,Promise,Protractor,我需要测试页面上的按钮列表是否显示并启用。首先,我使用elements.all收集所有元素 allEmployeeOptions = element.all(by.css('[role=option]')); 然后我尝试使用.each函数循环遍历它们,并测试它们是否显示(我还将添加isEnabled) 这似乎不起作用,我为每个元素重复了10次“预期函数为真” 我最好的猜测是它在解决循环承诺时遇到了问题,但这是我第一次在量角器中编写这样的循环。这也是可能的。每种方法都不是正确的,使用for循环会
allEmployeeOptions = element.all(by.css('[role=option]'));
然后我尝试使用.each函数循环遍历它们,并测试它们是否显示(我还将添加isEnabled)
这似乎不起作用,我为每个元素重复了10次“预期函数为真”
我最好的猜测是它在解决循环承诺时遇到了问题,但这是我第一次在量角器中编写这样的循环。这也是可能的。每种方法都不是正确的,使用for循环会更好
非常感谢您的帮助。
。每种方法都是正确的,我不会使用for循环来迭代元素。您的问题只是缺少括号,isDisplayed()
是一个函数,因此您只需将断言更改为expect(elm.isDisplayed()).toBe(true)代码>
另外,为了它的价值,我将添加另一个断言。被显示并不意味着一个元素必然是可点击的,你也应该考虑添加一个检查。 你做得对。但量角器有它的方法来检查一个元素是否可以点击
example:
it('....xxxx.', function() {
elems=$$('.items.item li'); // use your css locator
var EC = protractor.ExpectedConditions;
elems.each(async function(elem){
browser.wait(EC.elementToBeClickable(elem), 5000);
// perform other action
let elmtxt= await elem.getText();
console.log("text: "+elmtxt);
//expect(elem.isDisplayed()).toBe(true); /toBeTruthy();/
});
example:
it('....xxxx.', function() {
elems=$$('.items.item li'); // use your css locator
var EC = protractor.ExpectedConditions;
elems.each(async function(elem){
browser.wait(EC.elementToBeClickable(elem), 5000);
// perform other action
let elmtxt= await elem.getText();
console.log("text: "+elmtxt);
//expect(elem.isDisplayed()).toBe(true); /toBeTruthy();/
});