java - 在 Selenium (WebDriver) 中按坐标查找元素

标签 java selenium selenium-webdriver webdriver

我知道如何在 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/

相关文章:

java - 我可以重用 JAXB(或类似的)的现有部分来将模式类型基本映射到 Java 类型吗?

c# - 如何使用 Visual Studio 中的 Selenium 在 C# 中的私有(private) IE 浏览器中运行测试?

selenium-webdriver - 无法选择下拉列表

java - 如何在java中使用hittable方法实现检测循环的函数

Java 代码组织 : Where to keep instance of static class

java - 无法获取表中的元素数量

java - 在 eclipse Mars IDE 上通过 selenium webdriver 启动 Firefox 时,Firebug 不显示。

javascript - 在 webdriver 上下文之外使用 WebDriverJS Promise

java - 是否可以在不使用 Selenium Webdriver Java 中的 driver.switchTo().frame ("frameName"的情况下切换到框架中的元素?

java - 如何在 Maven 中跳过生成源