我正在使用编码的UI测试来测试web应用程序。
我有一个类Locator,用于存储CUIT查找控件所需的详细信息。若要在控件上操作,页对象指定的是定位器,而不是控件,低级函数查找控件并执行操作。
现在,我们班有:
问题:我需要操作的一些控件没有足够的唯一属性来查找它们。(是的,我知道开发人员应该改进他们的HTML,但我并不控制这一点。)我一直在使用一个定位器来查找附近的元素,然后在DOM中“步行”到我想要的元素。我讨厌在我的页面对象中使用这个DOM遍历代码,甚至在函数中加入这些代码。
一种可能的解决方案:,我正在考虑增强类Locator,以便它可以具有attrName/attrValue对或,这是对具有DOM遍历代码的函数的引用。这样做的一个优点是页面对象总是使用定位器对象。另一种情况是,当HTML得到改进时,定位器可以从DOM遍历代码更改为attrName/attrValue对,这对于页面对象来说是透明的。
不过,我觉得这可能太复杂了。
这个问题有更好的解决办法吗?
发布于 2014-04-21 17:39:17
具体而言,不确定您的定位器是如何工作的,但是您能否找到与该对象最近的父级,比如一个id为" parent“的HTML Div,然后计数下面的标记实例?例如:
HtmlDiv id="parent">
HtmlHyperlink>text1</
HtmlHyperlink>text2</将需要下列代码:
public HtmlHyperlink text2Link
{
get
{
HtmlDiv parentDiv = new HtmlDiv(browser);
parentDiv.SearchProperties["id"] = "parent";
HtmlHyperlink target = new HtmlHyperlink(parentDiv);
target.SearchProperties["TagInstance"] = "2";
}
}这将在父对象下找到第二个超链接。(标记实例不是基于零的)。
然后,您只需根据需要与对象交互:
Mouse.Click(text2Link);例如。
https://stackoverflow.com/questions/23035158
复制相似问题