我正在进行量角器测试。最近我的网页改变了文本框中的条款和条件。按钮提交仅在用户滚动文本框并单击“同意”按钮时才起作用。我尝试了以下选项向下滚动,但它没有向下滚动。非常感谢任何帮助。
var scrollbar = element(by.id('terms-conditions'));
var checkbox = element(by.id('checkbox'));
scrollbar.click()
browser.executeScript('arguments[0].scrollIntoView()', scrollbar.getWebElement());
browser.executeScript('window.scrollTo(0,670);')
checkbox.click();
我也跟着下面的链接,但没有运气。
答案 0 :(得分:0)
browser.executeScript
是异步调用,因此您需要将其放入controlFlow
,以便在单击复选框之前完成:
scrollbar.click();
browser.controlFlow().execute(function() {
browser.executeScript('arguments[0].scrollIntoView()', scrollbar.getWebElement());
browser.executeScript('window.scrollTo(0,670);');
});
checkbox.click();
答案 1 :(得分:0)
您正在使用的第二个js execute语句包含引用浏览器中打开窗口的Window.scrollTo
。并使用它只滚动整个窗口,但不滚动浏览器窗口中出现的弹出窗口
有关Window.scrollTo
通常条款和条件会显示在弹出窗口中,或者可能是div,因此Window.scrollTo
不起作用
有两种方法可以做到这一点
解决方案1:使用Jquery scrollTop()在特定的webElement内滚动
步骤1:确定包含服务条款滚动条的确切div
第2步:直接在Chrome控制台中尝试优化您的js语句
$('.modal-body').scrollTop()
- >这将返回滚动的当前位置
$('.modal-body').scrollTop(10000)
- >这设置了顶部位置的值
第3步:将其合并到量角器脚本中
browser.executeScript('$('.modal-body').scrollTop(10000)');
你可以通过传递元素&滚动量作为参数。请参阅here
解决方案2;我看到提交弹出窗口的最好方法不是处理界面,而是处理它背后的'form'元素。类似于我们如何处理文件上传。没有大惊小怪&有效
可以尝试这样的方法,首先让按钮可见,然后提交表单