我在JavaScript中创建了一些Selenium测试。我无法点击不在视图中的按钮(这似乎是Chrome驱动程序的一个问题)。此问题的解决方法只是scrolling to the element,但是显示的示例是Java,而不是JavaScript。根据java的解决方案,我尝试了以下内容但没有成功:
var element = driver.findElement(webdriver.By.id('next_button'));
var location = element.getLocation();
var window = new webdriver.Window(driver);
window.scrollBy(location);
我不认为我在这里使用正确类型的窗口对象。如何使用JavaScript向下滚动元素?
答案 0 :(得分:1)
getLocation()
函数以对象的形式返回位置。此外,window.scrollBy()
是一个DOM javascript函数,所以你不能在没有执行它的情况下在selenium中使用它。此外,window.scrollBy()
滚动DOM中特定数量的像素,而不是使用滚动到特定位置的window.scrollTo()
。这是你如何做到的 -
driver.wait(function(){
driver.findElement(By.id('next_button'), function(ele){
ele.getLocation().then(function(loc){
driver.executeScript('return window.scrollTo('+loc.x+','+loc.y+');')
.then(function(){
ele.click();
});
});
});
},10000);
希望这有帮助。