我已经使用了 WebAii 测试框架的免费版本(Art Of Test 在被 Telerik 收购之前发布的那个),所以我知道它基本上可以工作。所以我现在遇到的问题对我来说完全莫名其妙。
我正在尝试在现有站点中测试导航,并浏览一系列页面。我进入一个有(除其他外)两个按钮的页面。一个是“后退”按钮,它是按钮类型的输入元素,带有一个 onclick 处理程序,它调用一个只调用 history.back() 的 JavaScript 函数。另一个是提交按钮。
WebAii 找到提交按钮没有问题。但是当我告诉它点击它时,它显然是点击后退按钮。
以下是该网站的相关 HTML:
<div align="right">
<table border="0" width="200" cellpadding="8" style="border-collapse: collapse" bordercolor="#E0DFE3">
<tr>
<td>
<input type="button" value="<- Back" name="B2" onclick="cancelChange()" >
</td>
<td>
<input type="submit" value="Maint Details ->" name="lnkSubmit">
</td>
</tr>
</table>
</div>
这是测试代码:
HtmlInputSubmit maintDetailsButton = Find.ByAttributes<HtmlInputSubmit>("value=Maint Details ->");
maintDetailsButton.Click();
Assert.IsTrue(ActiveBrowser.Url.Contains(expectedPage), "URL {0} does not contain expected page {1}", ActiveBrowser.Url, expectedPage);
当我手动单击它时,操作顺序工作得很好,所以我看不到任何证据表明这是站点的问题。我已经看到大量证据表明实际上是单击“返回”按钮而不是“维护详细信息”按钮。(Fiddler 显示在发送点击请求时没有发出任何请求 - 与执行 history.back() 一致,因为浏览器只是从它的缓存中重新显示。当我点击时,它确实会转到上一页。最后,如果我从后退按钮中删除“onclick”属性,以便单击按钮什么都不做,那么在执行测试代码时,站点什么也不做——只是停留在当前页面上。)
我完全感到困惑。谁能给我一个提示?