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();