google-chrome - 使用量角器在 div 元素上滚动
问题描述
我需要向下滚动一个元素才能单击一个复选框。基本上是我必须接受的用户协议。在我没有滚动到 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) 如何工作的太多信息。如果有人能指出我做错了什么,我将不胜感激。附加信息:我使用铬、量角器、黄瓜。
解决方案
我知道这与 E2E 测试概念背道而驰。
但是,如果您不打算对此协议和复选框做任何断言,您只需要继续进行实际测试,您可以:
- 在您“阅读”协议之前检查复选框
- 之后检查它并找出正在更改的属性并使其启用。
- 通过使用更改此属性
browser.executeScript
推荐阅读
- android - 如何在条形图中启用滚动并将 xAxis 标签与条形组对齐?
- yii2 - Yii2 中的 ForbiddenHttpException 问题
- rdf - 我已经开发了一个本体——我该如何进行?
- django - 如何查询多个条件中的2个
- sql-server - 在创建表语句中动态打开/关闭标识
- javascript - RichEditor 使用 execCommand('bold') 两次附加额外标签
- ios - iOS/Swift 如何实时更新表格视图
- angular - 如何连接参数以链接到 mat-tab-nav-bar
- python - ValueError:未能找到可以处理输入的数据适配器:
, - php - ACF 默认值中的简码仅在保存帖子后才有效