C# Selenium操作单击可重复以前的调用

C# Selenium操作单击可重复以前的调用,c#,selenium,selenium-webdriver,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

我有这个密码

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();
因此,我希望首先单击基于
x
y
坐标的元素,然后单击
secondx
secondy
。但我得到的是:

第一步:点击
x
y

第二步:点击
x
y

第三步:点击
secondx
secondy


我通过调用
action=newactions(驱动程序)解决了这个问题
因此它创建了新对象,然后单击,但是没有更好的方法来解决这个问题吗?

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

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

new Actions(driver).MoveToElement(body, x, y).Click().Perform();
new Actions(driver).MoveToElement(body, secondx, secondy).Click().Perform();
或调用
仅执行一次:

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

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

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

new Actions(driver).MoveToElement(body, x, y).Click().Perform();
new Actions(driver).MoveToElement(body, secondx, secondy).Click().Perform();
或调用
仅执行一次:

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