如何滚动div并单击带有特定按钮文本的按钮

时间:2019-05-02 13:05:33

标签: typescript selenium automation protractor e2e-testing

我正在尝试自动执行以下instagram。我进入个人资料,然后点击关注者链接。它打开一个模式类型div,并且有所有关注者。我想单击除关注和请求按钮以外的所有其他按钮。但是问题是存在滚动条,并且在使用自动化查找元素时,无法找到所有按钮。

enter image description here

下面将分享我编写的收集所有跟随按钮并单击的方法,并单击dom中存在的按钮时,通过按向下翻页按钮向下滚动。

testHelper.retry只是一个函数,它将在执行任何操作(如单击或sendKeys)之前重试10次以找到给定时间段的元素

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++) {
                    browser.sleep(3000);
                    testHelper.retry(ExpectedConditions.elementToBeClickable(links[i]),
                        10,
                        90000,
                        true);
                    links[i].click().then(() => {
                        console.log("Number of follow buttons: " + links.length);
                        this.numberOfProfilesFollowed = i + 1;
                        browser.sleep(3000);
                        console.log("i: " + (i + 1));
                        if (i >= links.length - 2) {
                            this.ScrollDown();
                        }
                    });
                }
            }
        });

1 个答案:

答案 0 :(得分:0)

代替点击所需的元素,请尝试使用Actions,类似的东西应该可以帮助您:

Actions actions = new Actions(webDriver);
actions.moveToElement(element).click().perform();

在您的情况下,element将是每个带有“跟随”文本的元素。