提问人:GAmeya 提问时间:10/29/2023 更新时间:10/29/2023 访问量:32
JavaScript 滚动向下滚动到屏幕上看不到元素的位置
JavaScript Scrolling scrolls down where the element cannot be seen on the screen
问:
我正在用 Java 学习 selenium,我正在尝试使用 javascript 向下滚动到特定元素。
我编写的脚本向下滚动,但位于看不到元素的下方。不知道为什么会发生这种情况。
我在控制台中得到的错误如下Exception in thread "main" org.openqa.selenium.ScriptTimeoutException: script timeout
谁能帮我了解我在这里到底做错了什么?
public class JavaScriptScrolling {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.asda.com/");
Thread.sleep(5000);
driver.findElement(By.xpath("//button[@id='onetrust-accept-btn-handler']")).click();
Thread.sleep(3000);
JavaScriptUtils jUtil = new JavaScriptUtils(driver);
WebElement element = driver.findElement(By.xpath("//a[text()='Explore more']"));
jUtil.scrollIntoView(element);
element.click();
}
}
从 JavaScriptUtils 类进行滚动的方法如下
public void scrollIntoView(WebElement element) {
js.executeAsyncScript("arguments[0].scrollIntoView(true);", element);
}
答:
0赞
Mr Khan
10/29/2023
#1
该问题可能是由于 。若要解决此问题,可以根据需要调整 scrollIntoView 方法,使元素与容器的顶部或底部对齐。这是你如何做到的:scrollIntoView
public void scrollElementIntoView(WebElement element, boolean alignToTop) {
String script = "arguments[0].scrollIntoView(" + alignToTop + ");";
((JavascriptExecutor) driver).executeScript(script, element);
}
然后,您可以根据用例调用此方法,并将其设置为 true 或 false。若要将元素对齐到顶部,请使用 true;如果要将其与底部对齐,请使用 false。alignToTop
// scroll the element to the top of the view
jUtil.scrollElementIntoView(element, true);
// scroll the element to the bottom of the view
jUtil.scrollElementIntoView(element, false);
评论
0赞
GAmeya
10/29/2023
当我传递false(到容器底部)时,它正确对齐,脚本工作正常,但是布尔值设置为true,对齐不正确,它会滚动到元素下方,直到点击时不可见。
评论