Как прокрутить div и нажимать на кнопки с определенным текстом кнопки - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь автоматизировать следующий Instagram.Я захожу в профиль и нажимаю на ссылку подписчиков.Он открывает модальный тип div и есть все последователи.Я хочу нажать на все последующие кнопки, кроме кнопок отмены и запроса.Но проблема в том, что есть полоса прокрутки, и, находя элемент с помощью автоматизации, он не может найти все кнопки.

enter image description here

Ниже общего доступаметод, который я написал, чтобы собрать все последующие кнопки и щелкнуть, и когда кнопки, присутствующие в dom, находятся над ним, он прокручивается вниз, нажимая кнопку вниз страницы.

testHelper.retry - это просто функция, которая повторяет 10 раз длянайти элемент за заданный период времени, прежде чем он выполнит какое-либо действие, такое как нажатие или sendKeys

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 голосов
/ 02 мая 2019

Вместо того, чтобы щелкать по нужным элементам, попробуйте использовать Actions, вам может помочь что-то вроде этого:

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

В вашем случае element будет представлять собой каждый из элементов с текстом «Follow»нет.

...