我有这段代码
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
。但我得到的是:
1步:点击x
和y
2步:点击x
和y
3步:点击secondx
和secondy
我通过调用action = new Actions(driver);
来解决这个问题,所以它创建了新对象,然后点击了但是没有更好的方法可以解决这个问题吗?
答案 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();