【问题标题】:cant reach to the text field with Watin无法使用 Watin 访问文本字段
【发布时间】:2014-02-03 19:13:42
【问题描述】:

我正在尝试使用 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>

谢谢大家!

【问题讨论】:

  • 你试过 Find.ById("sc_task.work_notes")

标签: c# web automation watin icsharpcode


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多