0

我正在尝试使用 Watin 进行自动化,但我在处理 HTML 正文中的文本时遇到了问题。

当我登录该站点时,我设法到达搜索框并将输入放在那里,甚至当它移动到第二页时按“输入”,我无法到达那里的输入表单

这是我的代码 - 第一步工作顺利,但第二步不是。

 browser.GoTo("mywebsiteaddress");
        browser.TextField(Find.ByName("sysparm_search")).TypeText(ticketNumber.Text);
        System.Windows.Forms.SendKeys.SendWait("{ENTER}");

        //browser.TextField(Find.ByName("sys_display.sc_task.u_category")).TypeText(ticketNumber.Text);

        browser.Element("sc_task.work_notes");

这是我用谷歌浏览器检查时的浏览器源代码

<textarea wrap="soft" onkeypress="" onkeyup="multiModified(this);fieldTyped(this);" onfocus="this.isFocused=true;" autocomplete="off" data-charlimit="false" rows="16" id="sc_task.work_notes" data-length="4000" style="; width:100%; overflow:auto; " name="sc_task.work_notes" onblur="this.isFocused=false;" onchange="this.isFocused=false;multiModified(this)" onkeydown="multiKeyDown(this);;"></textarea>

谢谢大家!

4

2 回答 2

0

使用火狐。安装一个名为 Firebug 的插件。无论您要检查哪个元素,您都可以右键单击它并说检查带有火虫的元素。

一旦您知道该元素的 id 或名称,您就可以使用 Find 类轻松访问它。

有时,元素与主框架位于不同的框架中。如果不通过框架访问,watin 就无法直接访问该元素。

于 2014-01-15T09:45:53.427 回答
0

可能有很多事情,包括您正在寻找的内容在框架中,或者您在加载之前不太可能正在寻找它。如果在一个框架中,您需要指定哪个框架。如果尚未加载,则简单的检查方法是进行通用 sleep() 调用,尽管这不是最好的长期方法。

当我处理我找不到的东西时,我会大量使用 Flash() 方法。在您的情况下,您可能希望从整个页面级别开始,然后逐步深入到您的对象。Flash() 将向您显示您正在查看的位置,以确保您在页面上的正确位置查看,理想情况下可以深入到您正在寻找的父元素并能够正确识别和闪烁它然后找出尝试获取您真正想要获取的文本区域的问题。

于 2014-01-17T15:31:40.370 回答