茉莉花抛出错误:超时-jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内未调用异步回调

时间:2019-05-03 05:10:12

标签: angular automation jasmine protractor e2e-testing

我正在尝试自动执行以下instagram。我进入个人资料,然后点击关注者链接。它打开一个模式类型div,并且有所有关注者。 它首先找到DOM中存在的所有跟随按钮,然后单击它们。之后,它向下滚动并在DOM中找到更多跟随按钮,然后单击它们。但是在滚动2-3次后,自动化程序将停止并显示此错误。

!可滚动Div图像:https://imgur.com/6s3nGJs

附加以下代码以收集以下按钮并单击它们:

element(by.xpath("//div[@role='dialog']")).element(by.tagName("ul")).all(by.buttonText("Follow")).then(links => {
            console.log("Links Length" + links.length);
            if (links.length == 0) {
                this.ScrollDown();
            }
            else {
                for (let i = 0; i < links.length; i++) {
                    if (i >= links.length - 2) {
                        console.log("Scrolling Down");
                        browser.actions().sendKeys(protractor.Key.PAGE_DOWN).perform().then(function(){
                            console.log("Scrolled");
                            browser.sleep(3000);
                        });
                        break;
                    }
                    else {
                        browser.actions().mouseMove(links[i]).click().perform().then(function () {
                            console.log("Clicked on link " + (i + 1));
                            browser.sleep(3000);
                        });
                    }
                }
                this.followProfiles();
            }
        });

ScrollDown:

console.log("Scrolling Down");
        browser.wait(browser.actions().sendKeys(protractor.Key.PAGE_DOWN).perform().then(function () {
            console.log("Scrolled down");
        }), 90000);
        browser.sleep(5000);
        this.followProfiles();

2 个答案:

答案 0 :(得分:0)

这是因为您的测试所花费的时间超过了为茉莉花设置的默认超时时间。 要增加这一点,您可以在量角器配置文件中添加以下内容 jasmineNodeOpts:{     defaultTimeoutInterval:480000 //等于6分钟//如果测试花费的时间超过此时间,则可以增加它   }

答案 1 :(得分:0)

您可以使用js的单击功能来单击所需的内容。如果存在元素并且元素的宽度和高度(元素无法显示),则可以使用此功能直接单击htlm元素。 click():此功能是量角器功能,此功能的作用与单击鼠标左键相同,因此元素已存在并显示。 但是,尽管元素无法显示,但当元素刚刚出现时,js的单击功能可以单击html元素。 js的点击功能:

  

browser.executeScript(“ arguments [0] .click();”,geocoding_switcher.getWebElement());

而且,量角器通常运行速度很快,因此您应该使用单击js函数来单击列表中的所有“关注”按钮,这样可以使测试完美运行,不需要滚动到元素。 在js中,有很多滚动功能。例如:

  

browser.executeScript(“ arguments [0] .scrollIntoView();”,category_label.getWebElement());