我想单击x,y坐标,例如52、216-52、295。 (我正在将Mac OSX 10.8.5与Selenium 2.40.0和Firefox 29.0版一起使用)


#1 楼

给定要偏移的元素,可以移动鼠标并单击“动作”。您不能在浏览器内容窗口之外单击,也不能控制操作系统元素。
moveToElement(WebElement toElement, int xOffset, int yOffset)
Moves the mouse to an offset from the top-left corner of the element.

代码(Java)如下所示:

评论


您可以将窗口本身用作已知元素,以便单击绝对的x,y位置吗?如果是这样,您如何引用该窗口?

–道格
2014年9月13日23:21

@Doug我不确定,但是您可以尝试从左上角开始的body元素。如果不是,请问一个新问题,因为它有些新奇而又不同。

– Niels van Reijmersdal
2014-09-14 8:52

如果您希望包含整个屏幕的Web元素可以作为目标,则可以尝试,和
存在的元素。过去,我使用过Java的Robot库将光标移动到显示器上的绝对屏幕位置以执行操作。但这是一个非常麻烦的解决方案,因为机器人无法自然地区分浏览器窗口的开始和结束位置。

–朱利安
15年5月13日在19:36

在NodeJS中会有一个等效的东西吗?

–马尔科姆·萨尔瓦多(Malcolm Salvador)
18年7月13日在15:08

@ddsultan他们将其移动到selenium.dev:selenium.dev/selenium/docs/api/javascript/module / ...

– Niels van Reijmersdal
20 Dec 8'在14:05

#2 楼

我需要使用量角器在javascript中执行此操作:

  browser.actions()
  .mouseMove(
    element(by.css('.material-dialog-container'))
    , -20, -20  // pixel offset from top left
  )
  .click()
  .perform();


评论


我认为应该是mouseMove(element(by.css('。material-dialog-container')),{x:-20,y:-20})

– Dziamid
2015年4月2日在10:25

#3 楼

使用MoveToElement,您可以找到或单击任何想要的点,只需定义第一个参数,它可以是在实例WindowsDriver时创建的会话(winappdriver)或驱动程序(以其他方式)。否则,您可以将网格(我的情况),列表,面板或任何您想要的内容设置为第一个参数。
注意:第一个参数元素的左上角将是位置X = 0Y = 0
Actions actions = new Actions(this.session);
int xPosition = this.session.FindElementsByAccessibilityId("GraphicView")[0].Size.Width - 530;
int yPosition = this.session.FindElementsByAccessibilityId("GraphicView")[0].Size.Height- 150;
actions.MoveToElement(this.xecuteClientSession.FindElementsByAccessibilityId("GraphicView")[0], xPosition, yPosition).ContextClick().Build().Perform();


#4 楼

使用滑动,除了将x和y的位置保持在开始和结束位置相同(并使持续时间真正缩短)之外。

例如。触摸(540,905):

driver.swipe(540,905,540,905,50);