Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编码的UI代码优先API支持拖放吗?_C#_Coded Ui Tests - Fatal编程技术网

C# 编码的UI代码优先API支持拖放吗?

C# 编码的UI代码优先API支持拖放吗?,c#,coded-ui-tests,C#,Coded Ui Tests,我过去曾使用SeleniumWebDriver来自动化我的Web UI测试,但最近我不得不为Sharepoint编写测试。我使用Selenium已经走了很长一段路,但在某个点上我不得不执行拖放操作。在我的特殊情况下,我似乎无法通过拖放来使用该站点。现在我想看看其他的选择,CodedUI似乎是我下一个最好的选择。我不想记录测试,而是使用页面对象模型,因此我想使用编码的UI代码优先API库。但是我不确定它是否支持拖放。谷歌搜索也是空的。有人能确认编码的UI代码优先API是否支持拖放,如果浏览器窗口最

我过去曾使用SeleniumWebDriver来自动化我的Web UI测试,但最近我不得不为Sharepoint编写测试。我使用Selenium已经走了很长一段路,但在某个点上我不得不执行拖放操作。在我的特殊情况下,我似乎无法通过拖放来使用该站点。现在我想看看其他的选择,CodedUI似乎是我下一个最好的选择。我不想记录测试,而是使用页面对象模型,因此我想使用编码的UI代码优先API库。但是我不确定它是否支持拖放。谷歌搜索也是空的。有人能确认编码的UI代码优先API是否支持拖放,如果浏览器窗口最小化,它是否也能工作?这一点也很重要,因为我不希望鼠标实际移动到屏幕上的某个位置并执行拖放操作,因为在打开的窗口中维护和运行测试是一件痛苦的事情。

查看了他们的文档后,我可以说他们的API不支持拖放操作。但是,您可以使用codedui本地方法进行拖放,而且它工作得非常出色

通过编码的UI代码优先API查找要拖动的控件

HtmlControl dragControl = browser.Find<HtmlControl>(new { Id = "DragableControl" });

注意:如果最小化浏览器窗口,它将不起作用。您不能同时在计算机上运行codedui测试和工作。应始终打开测试中的浏览器/应用程序。我建议您在本地VM或远程VM中运行测试。通过这种方式,您可以在VM中启动测试,然后最小化它并继续在您的机器上工作。

我创建了下一个方法,因为我花了一段时间才发现它是如何工作的

因此,mayor指出它要知道DropArea并不是所有其他元素存在或将存在的容器Div,而是其他元素所在的容器Div

在我的示例中,我将一个单元格拖到第二个单元格所在的位置

  var rows = activeTab.GetElementsFromGrid();            

                var cellNameFirstRow= rows[0].CellsContent[2];
                //name cell from second row.
                var dropableArea = rows[1].CellsContent[2];

                cellNameFirstRow.DragOn(dropableArea, dropableArea.BoundingRectangle.Location);


public static bool DragOn(this UITestControl argDragableElement, UITestControl argDropArea, Point argDestinationPoint)
            {
                try
                {
                   // argDropArea.DrawHighlight();

                    argDropArea.EnsureClickable(argDestinationPoint);
                    Mouse.StartDragging(argDragableElement, argDragableElement.BoundingRectangle.Location);              
                    Mouse.StopDragging(argDropArea, argDestinationPoint);
                    WriteLine($"Dragging, {argDragableElement.GetSummaryProperties()}");
                    return true;
                }
                catch (UITestControlNotFoundException ex)
                {
                    WriteLine("Could not Drag element ,timeout exceeded ");
                    AssertClick(false, argDragableElement.Name.ToString(), ex.Message);
                }
                catch (CustomException ex)
                {
                    WriteLine("Could not Drag element ,timeout exceeded ");
                    AssertClick(false, argDragableElement.Name.ToString(), ex.Message);
                }
                catch (Exception ex)
                {
                    WriteLine("Could not Drag element ,timeout exceeded ");
                    AssertClick(false, argDragableElement.Name.ToString(), ex.Message);
                }
                return false;
            }

我曾经使用过这段代码,第一次它运行得很好,但是当我尝试反复拖动某个东西时,第一次之后它就不起作用了。不知道发生了什么事。。。
  var rows = activeTab.GetElementsFromGrid();            

                var cellNameFirstRow= rows[0].CellsContent[2];
                //name cell from second row.
                var dropableArea = rows[1].CellsContent[2];

                cellNameFirstRow.DragOn(dropableArea, dropableArea.BoundingRectangle.Location);


public static bool DragOn(this UITestControl argDragableElement, UITestControl argDropArea, Point argDestinationPoint)
            {
                try
                {
                   // argDropArea.DrawHighlight();

                    argDropArea.EnsureClickable(argDestinationPoint);
                    Mouse.StartDragging(argDragableElement, argDragableElement.BoundingRectangle.Location);              
                    Mouse.StopDragging(argDropArea, argDestinationPoint);
                    WriteLine($"Dragging, {argDragableElement.GetSummaryProperties()}");
                    return true;
                }
                catch (UITestControlNotFoundException ex)
                {
                    WriteLine("Could not Drag element ,timeout exceeded ");
                    AssertClick(false, argDragableElement.Name.ToString(), ex.Message);
                }
                catch (CustomException ex)
                {
                    WriteLine("Could not Drag element ,timeout exceeded ");
                    AssertClick(false, argDragableElement.Name.ToString(), ex.Message);
                }
                catch (Exception ex)
                {
                    WriteLine("Could not Drag element ,timeout exceeded ");
                    AssertClick(false, argDragableElement.Name.ToString(), ex.Message);
                }
                return false;
            }