man*_*ngo 13 ruby watir-webdriver selenium-webdriver
当一个元素与selenium不在视图中并且试图与它进行交互时,selenium通常会隐式地将元素滚动到视图中.这很好,除了令人讨厌的是它通常将元素放入视图中.我的意思是,如果元素在窗口下方,它将向下滚动,直到元素刚好接近窗口边缘.
通常这很好,但是当在一个带有边框的网站上工作时,这将导致许多这类错误
Selenium::WebDriver::Error::UnknownError:
unknown error: Element is not clickable at point (438, 747). Other element would receive the click: <body>...</body>
Run Code Online (Sandbox Code Playgroud)
因为网页的边框通常都在它上面,但无论如何都会尝试点击该元素.无论如何处理这个?也许在视线外时自动将元素移动到屏幕中心?我正在考虑通过红宝石修补猴子.
小智 22
这应该工作,以便将元素滚动到视图中心:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11471 次 |
| 最近记录: |