向下滚动条款和条件Textbox,然后单击Agree selenium

时间:2016-09-08 19:31:49

标签: selenium-webdriver protractor

我正在进行量角器测试。最近我的网页改变了文本框中的条款和条件。按钮提交仅在用户滚动文本框并单击“同意”按钮时才起作用。我尝试了以下选项向下滚动,但它没有向下滚动。非常感谢任何帮助。

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();

我也跟着下面的链接,但没有运气。

Protractor: Scroll down

2 个答案:

答案 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

的文档,请参阅here

通常条款和条件会显示在弹出窗口中,或者可能是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'元素。类似于我们如何处理文件上传。没有大惊小怪&有效

可以尝试这样的方法,首先让按钮可见,然后提交表单