【发布时间】:2017-06-02 13:30:47
【问题描述】:
这个问题类似于here 提出的问题。然而在这种情况下,张贴者的最终目的似乎实际上是选择一段文字,他们能够找到一种不涉及点击的变通方法。
和上一个问题的用户一样,我一开始以为可以通过三次调用click方法来模拟三次点击。
new Actions(driver)
.moveToElement(svgElement, posX, posY)
.click()
.click()
.click()
.perform()
但是,这不起作用,因为我的 javascript 代码会检查 UIEvent 实例的 detail 属性,并且每次调用 click 时始终为 1。因此下面的sn-p:
function clickHandler (event) {
if (event.detail == 1) {
singleClickHandler()
}
if (event.detail == 2) {
doubleClickHandler()
}
if (event.detail == 3) {
tripleClickHandler()
}
导致 singleClickHandler 在通过 Selenium 调用时被调用 3 次,而 singleClickHandler、doubleClickHandler 和 tripleClickHandler 中的每一个在通过浏览器 (Firefox) 手动执行时被调用一次。
如何通过 selenium 触发 detail 等于 3 的点击事件?
【问题讨论】:
-
我可以看到 Actions 类中没有像双击一样的选项。你检查过尝试机器人课程吗?
-
你能用
.moveToElement(svgElement, posX, posY).click().click().click().build().perform()试试吗? -
@santhoshkumar : 实际上有一个带有 Actions 类的 doubleclick() 方法
-
是的..我说有双击但没有三击...你能试试机器人类吗?..... Robot bot = new Robot(); bot.mouseMove(element.getLocation().x,element.getLocation().x); bot.mousePress(InputEvent.BUTTON1_MASK); bot.mouseRelease(InputEvent.BUTTON1_MASK); bot.mousePress(InputEvent.BUTTON1_MASK); bot.mouseRelease(InputEvent.BUTTON1_MASK); bot.mousePress(InputEvent.BUTTON1_MASK); bot.mouseRelease(InputEvent.BUTTON1_MASK);
-
@santhoshkumar - 我可以考虑 Robot 类,但对于这种单一的边缘情况来说似乎有点过分了。
标签: java selenium automated-tests dom-events