0

我正在尝试做一些网络自动化来登录并在动态加载的网页上使用 WatiN 检查订单状态。我正在使用 Visual Studio C# Express 2010 和 IE 浏览器。

从昨天运行良好的 .Text 获取 .Text 的几段代码<TD>不再起作用。有<TD>问题的包含一个<NOBR>and <INPUT>,这是问题吗?

我需要的文本也在,<INPUT>但标签没有定义IDNAME属性,并且包含在测试之间不一样的内部文本/值。我不能编辑有问题的网站,否则这在很久以前就已经修复了。

罪魁祸首:

public TableCell Status {
    get {
        return Document.TableCell(Find.ById("elementID")); 
    }
}

其他 TableCells 不工作,但 TextFields 和按钮很好。我的预感是该网站很大,WatiN 可能偶尔会超时,试图找到该元素。不过,我相当肯定,WatiN 只是ElementNotFoundException()在文档结束时才抛出。(???)

表单元素在到达它们之前没有完全加载以进行调试,所以我认为这可能是一个问题,但不是元素的 for 元素都已正确加载并且存在对所有元素都是正确的。此外,这只是一个调试问题,当我使用 .dll 文件将 .exe 复制到桌面时,它运行良好。

我已经设置了我的调试器,以便禁用“启用属性评估和其他隐式函数调用”,但这并没有帮助。

当我运行直接 .exe 但不是通过 Visual Studio 时,该方法有效。然后,当我重新构建相同的代码并将 .exe 再次复制到桌面时,它停止工作。

更新:显然,要连接的网站的网络管理员做了一些改变,破坏了很多东西,所以也许我的代码毕竟还好?当我得到他的回复时,我会再次更新。

4

2 回答 2

0

我遇到了各种 WatiN 测试运行者无法“看到”页面上的元素的问题……例如链接。我发现的一个解决方法是在具有提升权限的帐户下打开测试运行器。

于 2012-10-12T21:48:26.093 回答
0

那么也许你可以尝试类似的东西:

Document.WaitForComplete();

或者

TableCell tc = Document.TableCell(Find.ById("elementID"));
tc.WaitUntilExists();

为了表格单元出现?

于 2012-10-11T13:53:34.263 回答