我知道如何在 Selenium 中检索 Web 元素的坐标:
WebElement element = driver.findElement(By.xpath(XPath));
Point location = element.getLocation();
location.x + " " + location.y
但是我正在尝试做相反的事情 - 使用它的坐标定位一个 web 元素。
我知道我可以找到网页上的所有元素,遍历元素列表,获取列表中每个元素的 x、y 坐标并将其与预期坐标进行比较。如果元素的 x 和 y 坐标与预期的 web 元素匹配,我可以返回给定的 web 元素。然而,在我看来,需要遍历页面上的每个 Web 元素以找到一个匹配的元素似乎效率很低。
是否有更直接的方式通过坐标查找元素?
注:虽然这里也有人问过类似的问题:Get element at specified position - JavaScript - 我的问题是不同的,因为我希望能够直接使用 Selenium 来做到这一点,而无需使用 Javscript。
最佳答案
唯一可能的方法是根据所有可能的元素检查坐标(如果您对要查找的元素一无所知,例如标签)
所以使用 findElements
喜欢 driver.findElements(By.cssSelector("*"))
或 driver.findElements(By.xpath("//*"))
然后对于每个找到的元素检查它们的位置 x
, y
是您尝试匹配并返回元素(如果有)的那些。
或调用 js elementFromPoint
按照描述通过驱动程序 here :)
关于java - 在 Selenium (WebDriver) 中按坐标查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794501/