C#Selenium MoveByOffset抛出InvalidOperationException

时间:2017-04-10 19:25:08

标签: c# selenium

我有以下Selenium C#代码:

IWebElement energyLink= driver.FindElement(By.LinkText("Energy"));
Actions clickAction=new Actions(driver);
clickAction.MoveToElement(energyLink).MoveByOffset(-25,0).Click().Build().Perform();

clickAction.MoveToElement(energyLink).MoveByOffset(-25, 0).Click().Perform();

我正在InvalidOperationException= "Parameter 'x' was not a positive integer(IndexOutOfBounds)"

我的目的是点击位于的第三方组件 X:15 Y:395

IWebElement energyLink位于坐标X:40, Y:395

因此我尝试使用MoveByOffset(-25,0)

2 个答案:

答案 0 :(得分:1)

我认为你在Firefox上执行。

在selenium 2.53.1版本之后,它使用geckodriver.exe在Firefox中执行自动化脚本。

  

在geckodriver中未实现Actions类。所以你得到了   那个错误。

     

如果您使用chrome执行,那么您将无法获得该异常。

如果你想在Firefox中执行,那么你必须使用不需要geckodriver的旧版selenium

答案 1 :(得分:0)

ClickAndHold : 用于左键单击特定元素并按住 MoveByOffset:将该保持元素移动到给定位置 释放:释放当前偏移位置的元素 build and perform : 完成动作。

    IWebElement energyLink= driver.FindElement(By.LinkText("Energy"));
    Actions clickAction=new Actions(driver);
    clickAction.ClickAndHold(energyLink).MoveByOffset(-25,0).Release().Build().Perform();