首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中使用Selenium WebDriver滚动特定的DIV?

如何在Java中使用Selenium WebDriver滚动特定的DIV?
EN

Stack Overflow用户
提问于 2014-11-28 20:57:36
回答 8查看 99.8K关注 0票数 35

WebDriver无法识别某些WebElements,因此WebDriver无法找到在浏览器可见区域中不可见的元素。

为了使WebDriver可以查看WebElement,我们需要使该元素在浏览器视图中可见,以便在特定的div上向下滚动!

如何在网页的特定区域执行操作(向下滚动并单击)。我试了很多,但对我没什么帮助。

请帮我解决我的问题。

EN

回答 8

Stack Overflow用户

发布于 2015-08-19 19:43:57

代码语言:javascript
复制
driver.get("http://www.***.com/");
driver.manage().window().maximize();
WebElement scroll = driver.findElement(By.id("someId"));
scroll.sendKeys(Keys.PAGE_DOWN);
票数 5
EN

Stack Overflow用户

发布于 2014-11-28 21:04:32

向下滚动:

代码语言:javascript
复制
import org.openqa.selenium.JavascriptExecutor;
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(0, 250)"); //y value '250' can be altered

向上滚动:

代码语言:javascript
复制
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(250, 0)"); //x value '250' can be altered

滚动页面底部:

代码语言:javascript
复制
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight));");

代码语言:javascript
复制
Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL).sendKeys(Keys.END).perform();

在慢动作中完整滚动到底部:

代码语言:javascript
复制
for (int second = 0;; second++) {
    if(second >=60){
        break;
    }
    ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,400)", ""); //y value '400' can be altered
    Thread.sleep(3000);
}

代码语言:javascript
复制
JavascriptExecutor jse = (JavascriptExecutor)driver;
for (int second = 0;; second++) {
    if(second >=60){
        break;
    }
    jse.executeScript("window.scrollBy(0,800)", ""); //y value '800' can be altered
    Thread.sleep(3000);
}

自动滚动到您的WebElement:

代码语言:javascript
复制
Point hoverItem =driver.findElement(By.xpath("Value")).getLocation();
((JavascriptExecutor)driver).executeScript("return window.title;");    
Thread.sleep(6000);
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+(hoverItem.getY())+");"); 
// Adjust your page view by making changes right over here (hoverItem.getY()-400)

代码语言:javascript
复制
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(By.xpath("Value')]")));

代码语言:javascript
复制
WebElement element = driver.findElement(By.xpath("Value"));
Coordinates coordinate = ((Locatable)element).getCoordinates(); 
coordinate.onPage(); 
coordinate.inViewPort();
票数 3
EN

Stack Overflow用户

发布于 2017-05-24 18:54:01

使用JavascriptExceutorscrollIntoView()方法的另一种方法是:

代码语言:javascript
复制
WebElement DIVelement = driver.findElement(By.xpath("xpath to div"));

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].scrollIntoView(true)", DIVelement);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27189182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档