不能按下一个按钮或已按下的按钮Selenium

时间:2015-07-24 09:37:20

标签: selenium

我正在使用此代码按偏移

移动元素
Actions builder = new Actions(driver);
      builder.moveToElement(element).clickAndHold(element).moveByOffset(xOffset,yOffset).perform();

只使用一次但是当我使它成为一个函数时,它工作正常

public void fun(int xOffset,int yOffset, String elementId){
       WebElement element = driver.findElement(By.id(id));
       Actions builder = new Actions(driver);
       builder.moveToElement(element).clickAndHold(element).moveByOffset(xOffset,yOffset).perform();
}
fun(100,0,"main_element");
fun(0,100,"main_element");

并使用多个元素调用它我收到错误Cannot press more then one button or an already pressed button

1 个答案:

答案 0 :(得分:1)

有几种可能性可能会触发此问题:

  • 你的elementIds不是唯一的
  • 当你使用有趣的方法时,你会一次又一次地移交相同的elementId(最好发布你的代码,也许那里有一个循环中的错误或其他东西)

如果您使用相同的elementId但只是更改偏移量,这对您没有帮助。 每次clickAndHold(元素)后,您需要释放此按钮。否则,正如错误消息告诉您的那样,该按钮被视为"已按下"。 - >看一下方法here

的描述

那么你能做什么(取决于你点击按钮实际想要实现的目标):

1)不要clickAndHold(),而只是click()

 builder.moveToElement(element).click(element).moveByOffset(xOffset,yOffset).perform();

2)在clickAndHold()之后,使用release()

builder.moveToElement(element).clickAndHold(element).moveByOffset(xOffset,yOffset).perform();
builder.release(element).perform();