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

How to scroll a div and click on buttons with specific button text

我正在尝试自动化 Instagram 关注。我转到个人资料并单击关注者 link。它打开一个模式类型 div 并且有所有的追随者。我想单击除取消关注和请求按钮之外的所有关注按钮。但问题是有一个滚动条,在使用自动化查找元素时,它无法找到所有按钮。

下面分享我编写的收集所有关注按钮并单击的方法,当 dom 中存在的按钮结束时,它会通过按下翻页按钮向下滚动。

testHelper.retry 只是一个函数,它会在给定时间段内重试 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();
                        }
                    });
                }
            }
        });

尝试使用 Actions 而不是单击所需的元素,这样的内容应该可以帮助您:

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

在您的情况下,element 将是每个包含 'Follow' 文本的元素。