硒:单击并按住元素,然后滑动它

时间:2019-09-23 05:05:06

标签: selenium selenium-chromedriver

在我的应用程序中,我有一个场景,我需要在列表视图中滑动元素以向该项目添加新条目。我必须使用Selenium和C#将其自动化。应用程序是使用Ionic和Angular框架开发的。

在Selenium中,可以选择ClickAndHoldMoveByOffset方法,但是这些方法似乎都不起作用。同时没有错误显示。请帮忙。

到目前为止我尝试过的代码如下。

Actions dragger = new Actions(driver);

elementToSlide = driver.FindElement(By.XPath("//ion-item-slide[1]"));

dragger.ClickAndHold(elementToSlide).MoveByOffset(-47,0).Build().Perform();

图像仅供参考。列表视图中的第一个元素会滑动。

Before performing slide

After performing slide

4 个答案:

答案 0 :(得分:0)

也许拖放命令可以解决您的问题,请尝试这样

IWebElement elementToSlide = driver.FindElement(By.XPath("//ion-item-slide[1]"))
Actions dragger = new Actions(driver);
dragger.DragAndDropToOffset(elementToSlide, -47, 0).Build().Perform();

答案 1 :(得分:0)

我遇到了同样的问题,我写了这样的代码,它对我有用:

                Actions action = new Actions(driver);
                action.clickAndHold(elementToSlide);
                action.moveToElement(NextplaceElement).release();
                action.build().perform();

答案 2 :(得分:0)

感谢您的回答,实际上我在离子框架中发现我们不应该使用ion-item-sliding元素进行滑动,而应该使用下一个子元素ion-item。我是通过使用以下代码来完成的。

var slidableItm = driver.FindElement(By.XPath("//ion-item-sliding/ion-item");

Actions dragger = new Actions(driver);

dragger.ClickAndHold(slidableItm))).MoveByOffset(-47, 0).Build().Perform();

然后在滑动后,我们需要单击某些元素的坐标以完成并释放幻灯片。可以通过以下代码来实现。

var clickableItm = driver.FindElement(By.XPath("/ion-item-sliding/ion-item/div[1]/div/ion-label/div/p[1]"));

ILocatable c = (ILocatable)clickableItm;

RemoteWebDriver rd = (RemoteWebDriver)driver;

rd.Mouse.Click(c.Coordinates);

答案 3 :(得分:0)

    Actions a = new Actions(driver);

a.clickAndHold(e2).pause(2000).moveToElement(e1).release().build().perform();