C# 编码的UI代码优先API支持拖放吗?
我过去曾使用SeleniumWebDriver来自动化我的Web UI测试,但最近我不得不为Sharepoint编写测试。我使用Selenium已经走了很长一段路,但在某个点上我不得不执行拖放操作。在我的特殊情况下,我似乎无法通过拖放来使用该站点。现在我想看看其他的选择,CodedUI似乎是我下一个最好的选择。我不想记录测试,而是使用页面对象模型,因此我想使用编码的UI代码优先API库。但是我不确定它是否支持拖放。谷歌搜索也是空的。有人能确认编码的UI代码优先API是否支持拖放,如果浏览器窗口最小化,它是否也能工作?这一点也很重要,因为我不希望鼠标实际移动到屏幕上的某个位置并执行拖放操作,因为在打开的窗口中维护和运行测试是一件痛苦的事情。查看了他们的文档后,我可以说他们的API不支持拖放操作。但是,您可以使用codedui本地方法进行拖放,而且它工作得非常出色 通过编码的UI代码优先API查找要拖动的控件C# 编码的UI代码优先API支持拖放吗?,c#,coded-ui-tests,C#,Coded Ui Tests,我过去曾使用SeleniumWebDriver来自动化我的Web UI测试,但最近我不得不为Sharepoint编写测试。我使用Selenium已经走了很长一段路,但在某个点上我不得不执行拖放操作。在我的特殊情况下,我似乎无法通过拖放来使用该站点。现在我想看看其他的选择,CodedUI似乎是我下一个最好的选择。我不想记录测试,而是使用页面对象模型,因此我想使用编码的UI代码优先API库。但是我不确定它是否支持拖放。谷歌搜索也是空的。有人能确认编码的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;
}