gpt4 book ai didi

ruby - Selenium 滚动元素进入(中心) View

转载 作者:数据小太阳 更新时间:2023-10-29 06:38:56 24 4
gpt4 key购买 nike

当一个元素在 selenium 的 View 之外并且试图与之交互时,selenium 通常会首先隐式地将元素滚动到 View 中。这很棒,只是烦人的是它通常将元素放入 View 中。我的意思是,如果元素位于窗口下方,它会向下滚动足够多直到元素刚好与窗口边缘接壤。

通常这很好,但是当在周围有边框的网站上工作时,这将导致许多此类错误

Selenium::WebDriver::Error::UnknownError:
unknown error: Element is not clickable at point (438, 747). Other element would receive the click: <body>...</body>

因为通常网页的边框都在它上面,但无论如何都会尝试点击该元素。无论如何处理这个?也许在 View 之外时自动将元素移动到屏幕中央?我正在考虑通过 ruby​​ 进行猴子修补。

最佳答案

为了将元素滚动到 View 中心,这应该起作用:

WebElement element = driver.findElement(By.xxx("xxxx"));

String scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);"
+ "var elementTop = arguments[0].getBoundingClientRect().top;"
+ "window.scrollBy(0, elementTop-(viewPortHeight/2));";

((JavascriptExecutor) driver).executeScript(scrollElementIntoMiddle, element);

关于ruby - Selenium 滚动元素进入(中心) View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20167544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com