加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:52:45 所属栏目:百科 来源:网络整理
导读:当一个元素与selenium不在视图中并且试图与它进行交互时,selenium通常会隐式地将元素滚动到视图中.这很棒,但令人讨厌的是它通常会将元素放入视图中.我的意思是,如果元素在窗口下方,它将向下滚动,直到元素刚好接近窗口边缘. 通常这很好,但是当在带有边框的网
当一个元素与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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读