我正在使用watin来自动化网络系统上的进程(内部)。
我可以打开网站并访问某些链接,但其他链接无法找到。我认为这可能是因为它们是深度嵌套的,或者因为href是javascript。这是他们所处的格式:
<frame>
<html>
<frameset>
<frame>
<html>
<body>
<div>
<table>
<table>
<tr>
<td>
<a id="1_1_1_a" href="javascript:blah" </a>
我尝试过各种不同的方式来找到id,元素类型等。但我坚持这个。
有人可以帮忙吗?
由于
答案 0 :(得分:0)
帧中的元素必须通过其帧进行搜索,因为每个帧在WatIn中被视为单独的命名空间。因此,首先获取正确的帧(通过调用Frame方法或通过Frames属性 - 请注意,在您的示例中,您必须执行两次,因为您有两个嵌套帧),然后搜索链接,例如:
ie.Frames[0].Frames[0].Link("1_1_1_a")
答案 1 :(得分:0)
试试这个
using (var browser = new IE("your_web_site_here"))
{
try
{
Frame first_frame = browser.Frame(Find.ById("frame_1_id"));
Frame second_frame = first_frame.Frame(Find.ById("frame_2_id"));
var first_div = second_frame.Div(Find.ById("first_div_id"));
Assert.IsTrue(first_div.Exists);
var Link_to_click = first_div.Link(Find.ById("1_1_1_a"));
Assert.IsTrue(Link_to_click.Exists);
Link_to_click.Click();
}
catch (Exception ex)
{
}
}
有时候watin找不到元素我仍在试图找出原因和前提条件。
答案 2 :(得分:0)
我有一个类似的问题,我的测试将浏览到一个页面上有40个链接,即使你可以看到页面上的所有链接,下面的语句将显示链接(和其他元素集合)的计数零。
ie.Links.Count();
我仍然不确定底层问题是什么,但我发现如果你通过右键单击 - &gt;启动Gallio Icarus / Gallio Echo / Visual Studio(或任何你正在使用的测试运行器)以管理员身份运行,测试按预期工作,并且元素正确加载到ie浏览器对象中。