首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在具有多个滚动元素的web应用程序中水平执行windows滚动?

问如何在具有多个滚动元素的web应用程序中水平执行windows滚动?
EN

Stack Overflow用户
提问于 2020-01-22 07:20:46
回答 3查看 941关注 0票数 1

Usecase:执行水平滚动,直到找到元素

预reqs: Selenium - Java 3.141/chrome

下面是我的几个示例片段

代码语言:javascript
复制
JavascriptExecutor jse = (JavascriptExecutor) driver; //create jse object and with this object, execute js

jse.executeScript("arguments[0].scrollLeft += 250",driver.findElement(By.className("wux-scroller")));
jse.executeScript("window.scrollBy(500,0)"); 
jse.executeScript("scroll(500, 0)");
jse.executeScript("window.scrollTo(500,0)"); 
jse.executeScript("arguments[0].scrollIntoView();",el); 
jse.executeScript("arguments[0].scrollLeft = arguments[1];",driver.findElement(By.className("wux-scroller")), j)

预期结果:执行水平窗口滚动,直到显示元素

实际结果:滚动不会发生,但也不会引发异常

注意:

scrollbar

  • Both <div class="wux-scroller wux-ui-is-rendered" >

  • (I页面具有水平滚动和垂直滚动,滚动元素具有相同的类,<div class="wux-scroller wux-ui-is-rendered" >
  • (I认为)默认滚动器用于垂直滚动和水平滚动。图片附呈。

​

  • 如果在上面的代码段中将 scrollLeft替换为scrollTop,则滚动出现垂直细

F 228

参考以下链接,但没有帮助

how to scroll scrollbar horizontally which is inside a window using java

更新2:

请查找附件中的图片以获得更多的细节。

​

​

通知:

  1. 有两个水平滚动容器。是否导致某些trouble?
  2. gridengine容器是“wux-scroll”的占位符,并且一旦用户手动滚动它

,它就会被激活。

//尝试了下面的片段,但没有起作用。

代码语言:javascript
复制
JavascriptExecutor jse = (JavascriptExecutor) driver;    
jse.executeScript("window.scrollBy(-2000,0)");    
jse.executeScript("arguments[0].scrollLeft = arguments[1];",driver.findElement(By.className("wux-layouts-gridengine-scroller-container")), 500);    
jse.executeScript("arguments[0].scrollLeft = arguments[1];",driver.findElement(By.className("wux-scroller")), 500);

更新3:解决方案

下面,在selenium java中实现python有助于在我的应用程序中执行水平滚动。

代码语言:javascript
复制
 jse.executeScript("document.getElementsByClassName('wux-scroller wux-ui-is-rendered')[0].scrollLeft += 650");

jse.executeScript("document.getElementsByClassName('wux-scroller wux-ui-is-rendered')[0].scrollTo(350,0)");
EN

回答 3

Stack Overflow用户

发布于 2020-01-22 09:04:58

请使用Javascript尝试下面的代码,但是使用不同的属性

代码语言:javascript
复制
WebElement element = driver.findElement(By.className("wux-scroller"));

WebDriverWait wait = new WebDriverWait(driver, 30);

 wait.until(ExpectedConditions.visibilityOf(element));

JavascriptExecutor jse = (JavascriptExecutor) driver; 

jse.executeScript("arguments[0].scrollIntoView({behavior: \"auto\", block: \"center\", inline: \"nearest\"});", element);

或

代码语言:javascript
复制
jse.executeScript("arguments[0].scrollLeft = arguments[0].offsetWidth", element );
票数 0
EN

Stack Overflow用户

发布于 2020-01-22 17:14:16

您需要测试滚动还是需要元素?对于第二种情况,可以将--headless参数添加到驱动程序中。如果还不够的话,可以添加具有大分辨率的window-size参数。

票数 0
EN

Stack Overflow用户

发布于 2020-12-15 18:33:24

您需要选择一个焦点,然后只有它将被滚动。例如。

代码语言:javascript
复制
driver.get("http://www.flipkart.com/");
driver.manage().window().maximize();
driver.findElement(By.linkText("Trimmer")).click();
WebElement scroll = driver.findElement(By.id("brand"));
scroll.sendKeys(Keys.PAGE_DOWN);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59854548

复制
相关文章

相似问题

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