【发布时间】:2020-01-06 22:30:34
【问题描述】:
我需要向下滚动一个元素才能单击一个复选框。基本上是我必须接受的用户协议。在我没有滚动到 div 的底部之前,该复选框是不可点击的。 这就是我检查复选框的函数的样子:
async privacyStatementEnableCheckbox(){
await browser.sleep(3000);
await this.privacyStatementTextContent.click();
let privacyStatementCheckbox = element(by.xpath(AcceptNewInvitationPage.SELECTORS.privacyStatementCheckbox));
await browser.actions().mouseMove(this.privacyStatementTextContent).perform();
await browser.sleep(3000);
await privacyStatementCheckbox.click();
}
}
我使用 browser.sleep() 来查看发生了什么,并且显然 div 没有滚动。我得到的错误是:
WebDriverError: element click intercepted: element is not clickable at point xy...另一个元素会被点击
我认为这是因为复选框上有一个“隐藏”元素,直到用户滚动到 div 的底部。
我也试过了:
async privacyStatementEnableCheckbox(){
await browser.sleep(3000);
await this.privacyStatementTextContent.click();
let privacyStatementCheckbox = element(by.xpath(AcceptNewInvitationPage.SELECTORS.privacyStatementCheckbox));
await browser.executeScript('window.scrollTo(0,10000)').then(async function(){
//check if the checkbox is checked or not
if(await this.privacyStatementCheckboxValue.getAttribute("data-bv-result") !== "VALID"){
await browser.sleep(3000);
await privacyStatementCheckbox.click();
}
}
我知道这里有很多关于滚动 div 的主题,但我在其中找不到适合我的解决方案。 这两个选项都没有为我执行 div 上的滚动,而且我找不到有关 moseMove(element) 如何工作的太多信息。 如果有人能指出我做错了什么,我将不胜感激。 附加信息:我正在使用 chrome、量角器、黄瓜。
【问题讨论】:
标签: google-chrome scroll protractor