【发布时间】:2021-03-28 10:24:40
【问题描述】:
我在 Android 平板电脑的网页上拖放元素时遇到了很多麻烦。 我使用的代码是这样的:
IWebElement dragFrom = driver.FindElement(By.XPath(dragElement));
IWebElement dragTo = driver.FindElement(By.XPath(dropElement));
Point fromPoint = dragFrom.Location;
Point toPoint = dragTo.Location;
((AndroidDriver<AndroidElement>)driver).Context = "NATIVE_APP";
new TouchAction((AndroidDriver<AndroidElement>)driver).
LongPress(fromPoint.X, fromPoint.Y).
Wait(3000).
MoveTo(toPoint.X, toPoint.Y).
Release().Perform();
((AndroidDriver<AndroidElement>)driver).Context = "CHROMIUM";
但是,当我使用它时,浏览器的最顶部会被点击,要么是浏览器选项卡,要么可能是它从设备顶部的滑动菜单中略微下拉。 我查看了点的 X 和 Y,它们不是屏幕的左上角(X 740,Y 50)
最初我只使用了 Actions,但我收到了一些疯狂的错误消息“OpenQA.Selenium.WebDriverException:'处理命令时发生未知的服务器端错误。原始错误:无法代理。代理错误:无法代理命令到远程服务器。原始错误:501 -“未实现的命令:”
Actions actions = new Actions(driver);
actions.DragAndDrop(
driver.FindElement(By.XPath(dragElement)),
driver.FindElement(By.XPath(dropElement)))
.Release()
.Build().Perform();
我也使用了下面的代码,但现在一个错误告诉我 Swipe 不存在
TouchAction action = new TouchAction((IPerformsTouchActions)driver);
action.Press(startX, startY).Wait(1000).MoveTo(endX, endY).Release().Perform();
((AndroidDriver<IWebElement>)driver).Swipe(startX, startY, endX, endY, 100);
在使用 Android 设备时,有没有人有可靠的方法在网页上拖放元素?或者知道我在上面的代码中做错了什么吗?
似乎当appium点击屏幕时,它没有考虑浏览器标题的大小,因此例如当它点击Y 24时,它会按照总屏幕大小,而不是网页屏幕大小。所以它从手机屏幕顶部向下点击 24 像素,而不是从网页顶部。
提前致谢。
【问题讨论】:
标签: c# android selenium drag-and-drop appium