Selenium动作点击会重复之前的通话

时间:2017-06-14 09:52:01

标签: c# selenium selenium-webdriver

我有这段代码

IWebDriver driver = new ChromeDriver(options);
var action = new Actions(driver);
var body = driver.FindElement(By.XPath(".//body"));
action.MoveToElement(body, x, y).Click().Build().Perform();
action.MoveToElement(body, secondx, secondy).Click().Build().Perform();

所以我希望我首先点击基于xy坐标的元素,然后点击secondxsecondy。但我得到的是:

1步:点击xy

2步:点击xy

3步:点击secondxsecondy

我通过调用action = new Actions(driver);来解决这个问题,所以它创建了新对象,然后点击了但是没有更好的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在您的示例中,操作堆叠在一个实例中(action)。由于Perform未删除已执行的操作,因此Perform上的第二次调用也会执行第一个Perform中的操作。

要解决此问题,请创建两个实例:

new Actions(driver).MoveToElement(body, x, y).Click().Perform();
new Actions(driver).MoveToElement(body, secondx, secondy).Click().Perform();

或仅拨打Perform一次:

new Actions(driver)
  .MoveToElement(body, x, y)
  .Click()
  .MoveToElement(body, secondx, secondy)
  .Click()
  .Perform();