Javascript 如何使用量角器循环一组元素并测试它们是否可单击

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循环会

我需要测试页面上的按钮列表是否显示并启用。首先,我使用elements.all收集所有元素

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();/
});