![](/img/trans.png)
[英]What is the benefit of using HTML5 tags like <article>, <section>, <figure>, <header>, <footer>, <nav>?
[英]CodedUI GetChildren() doesn't return children with HTML5 tags like HEADER, SECTION, ARTICLE, NAV
在codedUI中,无法通过带有HTML5标签的html页面中的GetChildren()方法遍历。
我的HTML结构是这样的。
HTML
|-BODY
|-DIV id="pagetop"
|- HEADER class="headerclass"
|- NAV class="navclass"
|- SECTION class="sectionclass"
|- FOOTER class="footerclass"
|- DIV id="lastdiv"
问题:在“ pagetop” div控件上执行GetChildren()时,仅返回其中包含“ lastdiv” div控件的1个结果。 它应该返回5个控件。
我能够捕获SECTION(或其他HTML5标记)的UIMap,并能够通过GetParent()方法向后遍历,但是另一种方法不起作用。
SECTION.GetParent() = DIV id="pagetop" [Works as expected]
SECTION.GetParent().GetChildren() = Only 1 result [This is wrong, should be 5]
在codedui中遍历HTML5标签是否存在问题?
尝试查看找到的一个控件的子控件。 我不知道有什么可以说您显示的HTML结构必须以完全相同的级别数表示。 换个说法,UI控件的级别可能比HTML结构所需的最低级别高。
要了解HTML的表示方式,您可以使用编码UI十字线工具。 从五个部分之一(或其子部分)开始,然后使用四个导航箭头在层次结构中向上移动,以查看“编码的用户界面”在每个级别上可以看到的项目。
另一种方法可能是使用调用GetChildren()
递归代码来递归层次结构,并确切显示每个级别上存在的内容。 您可能在我对这个问题的回答中使用基于递归例程的代码,在C#中使用InnerText递归地定位UIElement,但使用较小的maxDepth
并添加一些Console.Writeline()
或其他打印语句以显示找到的控件。
我已在VS2013反馈论坛中针对此问题提交了一个错误。 可以在这里跟踪它: https : //connect.microsoft.com/VisualStudio/feedback/details/898599/
根据AdrianHHH的建议,我目前正在这样做,目的是让控件的所有子级都能使用。 这会将所有控件(包括HTML5控件)返回为HtmlCustom。
private List<UITestControl> GetAllChildren(UITestControl uiTestControl)
{
var child = new HtmlControl(uiTestControl);
child.SearchProperties.Add("InnerText", "", PropertyExpressionOperator.Contains);
var items = child.FindMatchingControls().ToList();
var trueChildren = items.Where(i => i.GetParent().Equals(uiTestControl)).ToList();
return trueChildren;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.