红宝石 – 硒滚动元素进入(视图中心)

前端之家收集整理的这篇文章主要介绍了红宝石 – 硒滚动元素进入(视图中心)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当一个元素与selenium不在视图中并且试图与它进行交互时,selenium通常会隐式地将元素滚动到视图中.这很棒,但令人讨厌的是它通常会将元素放入视图中.我的意思是,如果元素在窗口下方,它将向下滚动,直到元素刚好接近窗口边缘.

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

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

因为通常网页的边框位于其上方,但无论如何都会尝试单击该元素.无论如何处理这个?也许是在视线外时自动将元素移动到屏幕中心?我正在考虑通过红宝石修补猴子.

解决方法

这应该可以将元素滚动到视图中心:
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相关文章