我在 Visual Studio 2005 中使用 WatiN 测试工具。当我尝试从列表框中选择一个值时,我收到“拒绝访问”错误。
Vinay- wwwmy24x7learningcom
问问题
2950 次
3 回答
4
最近在使用 WatiN 2.0 beta 时,我在选择列表中看到了很多。而不是使用 aSelectList.Select(strText) 选项,当你这样做时,它似乎工作得更好:
ie.SelectList(Find.ById("MySelect")).Option(Find.ByText("Option 1")).Select();
当更改导致自动回发的 ASP.NET 控件时,也会发生这种情况。第一个更改将注册,但您尝试访问的下一个元素将引发“访问被拒绝”错误,因为它仍在尝试访问旧页面。在这种情况下,您可以尝试使用 ie.WaitForComplete(),但有时这是必需的:
ie.SelectList(Find.ById("AutoPostBackSelect")).Option(Find.ByText("Option")).Select();
System.Threading.Thread.Sleep(200); //Sleep to make sure post back registers
ie.WaitForComplete();
ie.SelectList(Find.ById("MySelect")).Refresh()
ie.SelectList(Find.ById("MySelect")).Option(Find.ByText("Option 1")).Select();
于 2009-07-22T00:59:14.580 回答
1
这是选择列表中的一个错误,如果列表尚未准备好接受输入,它可能会抛出几种异常类型。我们这样解决:
try
{
_domContainer.SelectList(_control.WatinAttribute).Focus();
_domContainer.SelectList(_control.WatinAttribute).Select(value);
}
catch (Exception e)
{
Console.WriteLine("Select list eception caught: " + e.Message + e.StackTrace);
// we have tried once already and failed, so let's wait for half a second
System.Threading.Thread.Sleep(500);
_domContainer.SelectList(_control.WatinAttribute).Select(value);
}
是的,我知道吞下所有像这样的异常通常是不好的,但是如果再次发生异常,它会被抛出到测试代码并且测试失败。
于 2009-06-09T03:23:37.913 回答
1
我注意到如果您尝试选择一个已经选择的值,就会发生这种情况。
您可以通过预检查解决此问题:
if(_sel_ddlPeriodFromDay.GetValue("value")!="1")
_sel_ddlPeriodFromDay.SelectByValue("1");
或者也许使用try catch?
try{_sel_ddlPeriodFromDay.SelectByValue("1");}
catch{}
于 2009-09-01T00:51:10.947 回答