我正在尝试自动执行以下instagram。我进入个人资料,然后点击关注者链接。它打开一个模式类型div,并且有所有关注者。我想单击除关注和请求按钮以外的所有其他按钮。但是问题是存在滚动条,并且在使用自动化查找元素时,无法找到所有按钮。
下面将分享我编写的收集所有跟随按钮并单击的方法,并单击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();
}
});
}
}
});
答案 0 :(得分:0)
代替点击所需的元素,请尝试使用Actions
,类似的东西应该可以帮助您:
Actions actions = new Actions(webDriver);
actions.moveToElement(element).click().perform();
在您的情况下,element
将是每个带有“跟随”文本的元素。