【问题标题】:How to find x,y position different of one chart in another chart如何在另一个图表中找到与一个图表不同的 x,y 位置
【发布时间】:2015-09-22 14:20:14
【问题描述】:

我正在开发自动化项目,以使用 Selenium webdriver 和 Java 来自动化 Web 应用程序测试。但是,我们无法将鼠标指针移动到页面上所需的位置 (x,y)。我们已经使用 Actions 类来实现这一点,但是这个类不会将鼠标指针移动到位置上,它只是移动鼠标的焦点,我们需要将鼠标悬停在元素上才能打开工具提示。我们尝试过使用其他框架 SIKULI,它适用于图像,效果很好,但它不会针对页面上的每个元素/图像,它会选择与之匹配的随机图像。

但是,我们在网页上有多个点的图形,该图形具有工具提示,仅当鼠标物理悬停在元素上时才会打开。现在,我们遇到了新的想法,即获取元素在页面上的位置 (x,y) 并使用 Robot 类将鼠标移动到所需的位置,但是当我们传递元素的 (x,y) 位置时页面,它将鼠标移动到屏幕上的其他位置,原因是机器人类将采用屏幕分辨率并根据 (x,y) 位置移动鼠标。

我们是否可以根据桌面屏幕尺寸务实地找到确切位置,例如网页尺寸是(3081,5172),基于网页元素位置是(723,415),现在屏幕尺寸时元素在屏幕上的位置是多少是(1920,1080)?

下面是我正在使用的代码。

 Robot robot=new Robot();
 Actions action = new Actions(driver);
 action.moveToElement(ele).click().build().perform();
 robot.mouseMove(ele.getLocation().getX(), ele.getLocation().getY());

注意:action.moveToElement 方法不会将鼠标指针物理移动到所需元素上,robot.mouseMove 方法会在桌面屏幕上移动鼠标,导致输出不正确。

您的意见将不胜感激

【问题讨论】:

  • 到目前为止你有没有尝试过?如果是这样,请编辑您的问题并包含一些 sn-ps。这将极大地帮助人们回答您的问题!阅读有关how to ask a great question 的更多信息。
  • 不能 Selenium 给你 html 元素的屏幕位置吗?
  • @Antoniossss,我们从 selenium 获取 html 元素的位置,但是当我们将值传递给机器人类时,它会根据桌面屏幕大小而不是页面大小来计算 x,y 位置...
  • 你的意思是位置是相对于浏览器而不是相对于屏幕的?\

标签: java algorithm design-patterns selenium-webdriver discrete-mathematics


【解决方案1】:

“您的声明:我们已经尝试使用其他框架 SIKULI,它适用于图像,效果很好,但它不会针对页面上的每个元素/图像,它会选择与之匹配的随机图像。”

如果提供给 sikuli 以查找目的的图像在给定的相似度下有多个匹配项(默认为 0.7),则无法预测 Sikuli 可以单击的匹配项。对于这种情况,您可以通过提供更高的匹配百分比来优化您的搜索:

pattern target = new Pattern ("img path/path").similar( (float) 0.85);

其他方法是使用 findAll(..) 命令返回所有匹配的匹配迭代器。然后你可以对它们进行垂直或水平排序(这很棘手,需要更多的编码)并使用它们。

sikuli 中的另一种方法使用这个:

Screen s = new Screen();
s.hover(new Location (int x-coordinate, int y-coordinate));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多