我正在使用WatiN来测试网站并自动化流程。我可以成功打开网站,但是当我尝试从选择列表中选择一个选项时会出现问题:
<select id="form:Dropdown" name="form:Dropdown" size="1" title="Select Option"> <option value="0">Select Code</option>
<option value="234890/NA/1">23FA4890</option>
<option value="237014/NA/1">23FA7014</option>
</select>
代码:
Settings.AttachToBrowserTimeOut = 240;
Settings.WaitUntilExistsTimeOut = 240;
Settings.WaitForCompleteTimeOut = 240;
browser = new IE();
browser.GoTo(url);
browser.WaitForComplete();
//Thread.Sleep(10000);
browser.SelectList(Find.ById("form:Dropdown")).WaitUntilExists(); //ERROR OCCURS HERE
SelectList dList = browser.SelectList(Find.ById("form:Dropdown"));
dList.Select("23FA4890");
这看起来应该可以工作,但我一直收到错误“等待240秒才能显示元素超时。”
答案 0 :(得分:0)
我认为您不需要致电WaitUntilExists
,因为WaitForComplete
已经阻止,直到网页完全加载为止。我知道这并没有完全回答你的问题,但我想向你展示一些代码的例子,我在生产中使用了一年以上从未出现过问题。
注意,我从iframe中抓取一个框架,然后从下拉列表中选择“ID”的值:
Regex regex = new Regex(@"^.*\/globalframeset\.esp.*$");
using (var browser = IE.AttachTo<IE>(Find.ByUrl(regex), 12))
{
if (browser != null)
{
browser.AutoClose = false;
var iFrame = browser.Frame(Find.ById("GlobalWrapper"));
if (iFrame != null)
{
var frame = iFrame.Frame(Find.ByName("frGlobalNav"));
if (frame != null)
{
frame.TextField(Find.ByName("findtext")).Value = person.MedicalRecordNumber;
// This code is setting the DDL called "filtertype" to a value of "ID"
frame.SelectList(Find.ByName("filtertype")).SelectByValue("ID");
Regex buttonRegex = new Regex(@"^.*\/go_text\.gif.*$");
frame.Image(Find.BySrc(buttonRegex)).ClickNoWait();
}
}
browser.BringToFront();
}
}