-2

我正在 Visual Studio 中运行一个测试项目,该项目正在为网页运行测试步骤。

网页本身的编码很差。它有这样的东西:

<a id ="GenericButton" </a> 

<div id="UniqueID" class="ThisDiv">
    <a id ="GenericButton" </a> 
</div>

我遇到的问题是我需要单击 div“UniqueID”中的链接。我不想点击第一个网页按钮。

使用代码:

HtmlHyperlink myLink = new HtmlHyperlink(this.IE);
myLink.SearchProperties[HtmlHyperlink.PropertyNames.Id] = "GenericButton";
Mouse.Click(myLink)

将导致单击第一个按钮而不是 div“UniqueID”内的按钮

我可以使用以下方法获取 div:

HtmlDiv myDiv = new HtmlDiv(this.IE);
myDiv.SearchProperties[HtmlCheckBox.PropertyNames.Class] = "ThisDiv";
myDiv.SearchProperties[HtmlCheckBox.PropertyNames.Id] = "UniqueID";
//The below line is later referenced
int myDivTag = myDiv.TagInstance;

但是我怎样才能捕获这个 div 内的 a 帧呢?

此外,在调试时,对象 myDiv 似乎没有在 Visual Studios 中正确设置自己,直到运行“int myDivTag = myDiv.TagInstance;”行。为什么调试器直到在那之后才知道我指的是哪个对象?

我将 Visual Studio 库用于这些操作,而不是像 WatiN 之类的东西。

4

2 回答 2

2

如果网页的代码很差,那么对于网页的测试应该会因为实施得很差的位而失败 - 很简单。

在 HTML 中,两个元素不应具有相同的 ID。所以写你的测试只需要一个元素。由于测试的输入标记将提供具有相同 ID 的两个元素,因此测试应该失败并保持失败,直到问题在另一端实际得到解决。

破解你的测试以使用糟糕的工具是没有意义的,因为它破坏了测试的意义。

更新:我找到了这个答案,它可能会为找到嵌套a元素提供解决方案。

于 2014-10-22T13:39:52.737 回答
1

Adrian 提供了有用的修复链接:如何处理测试缺少足够独特属性的 HTML 控件?

HtmlDiv myDiv = new HtmlDiv(this.IE);
myDiv.SearchProperties[HtmlDiv.PropertyNames.Class] = "ThisDiv";
myDiv.SearchProperties[HtmlDiv.PropertyNames.Id] = "UniqueID";
HtmlHyperlink myLink = new HtmlHyperlink(myDiv);
myLink.SearchProperties[HtmlHyperlink.PropertyNames.id] = "GenericButton";

Mouse.Click(myLink);
于 2014-10-22T14:51:39.740 回答