我可以拖放到看不见的元素吗?

时间:2019-07-09 14:10:01

标签: c# selenium-webdriver winappdriver

我正在使用WinAppDriver测试UWP应用。 为了进行测试,我需要将列表的最后一个元素拖放到列表的第一个元素。这样我就得到了两个元素的坐标:

var elementCoord = _session.FindElementByName(elementName).Coordinates;
var targetCoord = _session.FindElementByName(targetElementName).Coordinates;

然后我像这样拖放元素:

_session.Mouse.MouseMove(elementCoord);
_session.Mouse.MouseDown(null);
_session.Mouse.MouseMove(targetCoord, 10, 10);
System.Threading.Thread.Sleep(200);
_session.Mouse.MouseUp(null);

sleep(200)用于让应用程序在拖放之前确认拖动。当这两个元素都在视图中时,这可以很好地工作。

问题在于此列表可能足够长,因此两个元素不能同时出现在视图中。而且,将元素的坐标移出视线也会产生不良影响。

我可以轻松地通过单击将其拖动到视图中(使用click动作的隐式滚动到视图效果)。 问题出在第二个元素上:如果单击它,则会搞乱拖放动作。

因此,有没有一种方法可以在不单击的情况下执行隐式滚动到视图中?

我进行了搜索,但找不到任何东西,我觉得这很可悲,因为它在很多情况下都非常有用,包括某些我们不需要单击(或不需要单击)的地方。< / p>

如果没有,是否还有其他方法可以将元素拖放到视图外?

谢谢

edit:我更改了测试的逻辑,因此可以将第二个元素拖到第一个元素中,而不是将最后一个元素拖到第一个元素中。因此,对于该特定测试,我不再有任何问题,但是我仍然想知道是否存在我上面问的两个问题的解决方案,因为我认为这很有用。

0 个答案:

没有答案