如何滚动 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' 文本的元素。
我正在尝试自动化 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' 文本的元素。