Selenium webdriver 向下滚动“条款和条件”文本框,然后单击“同意”
我正在做量角器测试。最近我的网页发生了变化,条款和条件在文本框中。只有当用户滚动文本框并单击“同意”按钮时,“提交”按钮才起作用。我尝试了以下选项向下滚动,但没有向下滚动。非常感谢您的帮助Selenium webdriver 向下滚动“条款和条件”文本框,然后单击“同意”,selenium-webdriver,protractor,Selenium Webdriver,Protractor,我正在做量角器测试。最近我的网页发生了变化,条款和条件在文本框中。只有当用户滚动文本框并单击“同意”按钮时,“提交”按钮才起作用。我尝试了以下选项向下滚动,但没有向下滚动。非常感谢您的帮助 var scrollbar = element(by.id('terms-conditions')); var checkbox = element(by.id('checkbox')); scrollbar.click() browser.executeScript('arguments[0].scro
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();
我也按照下面的链接,但没有运气
浏览器。executeScript
是一个异步调用,因此您需要将其放入控制流中,以便在单击复选框之前完成:
scrollbar.click();
browser.controlFlow().execute(function() {
browser.executeScript('arguments[0].scrollIntoView()', scrollbar.getWebElement());
browser.executeScript('window.scrollTo(0,670);');
});
checkbox.click();
browser.executeScript
是一个异步调用,因此需要将其放入controlFlow
中,以便在单击复选框之前完成:
scrollbar.click();
browser.controlFlow().execute(function() {
browser.executeScript('arguments[0].scrollIntoView()', scrollbar.getWebElement());
browser.executeScript('window.scrollTo(0,670);');
});
checkbox.click();
您正在使用的第二个js execute语句包含Window.scrollTo
,它引用浏览器中打开的窗口。使用它只会滚动整个窗口,而不会滚动浏览器窗口中出现的弹出窗口
请参阅窗口上的文档。滚动至
通常情况下,条款和条件会显示在弹出窗口中,或者可能是一个div,因此窗口。scrollTo
不起作用
有两种方法可以做到这一点
解决方案1:使用Jquery scrollTop()在特定webElement内滚动
步骤1:确定保存服务条款滚动条的确切div
步骤2:通过直接在Chrome控制台中尝试来优化js语句
$('.modal body').scrollTop()
->返回滚动条的当前位置
$('.modal body')。scrollTop(10000)
->此设置top position的值
第3步:将其合并到量角器脚本中
browser.executeScript('$('.modal-body').scrollTop(10000)');
您可以通过将元素和滚动量作为参数传递来实现专业化。提及
解决方案2;提交弹出窗口的最佳方式不是处理界面,而是处理其背后的“表单”元素。类似于我们处理文件上传的方式。没有麻烦&有效
您可以尝试这样做,首先使按钮可见,然后提交表单。您使用的第二个js execute语句包含窗口。滚动到,它引用浏览器中打开的窗口。使用它只会滚动整个窗口,而不会滚动浏览器窗口中出现的弹出窗口
请参阅窗口上的文档。滚动至
通常情况下,条款和条件会显示在弹出窗口中,或者可能是一个div,因此窗口。scrollTo
不起作用
有两种方法可以做到这一点
解决方案1:使用Jquery scrollTop()在特定webElement内滚动
步骤1:确定保存服务条款滚动条的确切div
步骤2:通过直接在Chrome控制台中尝试来优化js语句
$('.modal body').scrollTop()
->返回滚动条的当前位置
$('.modal body')。scrollTop(10000)
->此设置top position的值
第3步:将其合并到量角器脚本中
browser.executeScript('$('.modal-body').scrollTop(10000)');
您可以通过将元素和滚动量作为参数传递来实现专业化。提及
解决方案2;提交弹出窗口的最佳方式不是处理界面,而是处理其背后的“表单”元素。类似于我们处理文件上传的方式。没有麻烦&有效
可以尝试类似的方法,首先使按钮可见,然后提交表单您应该尝试访问复选框元素,然后单击asbrowser.executeScript('arguments[0].scrollIntoView(),复选框);复选框。单击()代码>您应该尝试访问复选框元素,然后单击asbrowser.executeScript('arguments[0].scrollIntoView()',复选框);复选框。单击()代码>文本框滚动条仍然没有向下滚动:(文本框滚动条仍然没有向下滚动:(