【问题标题】:WatiN unable to find textbox by id nor nameWatiN 无法通过 id 或名称找到文本框
【发布时间】:2011-08-26 05:59:03
【问题描述】:

我整个晚上都在为此苦苦挣扎,有人可以告诉我如何让 WatiN 到 TypeText 进入这个文本框吗?在选择单选按钮之前它被禁用并且我不知所措..我对所有这一切仍然有点陌生

<TR>
    <TD WIDTH="100">Billing ID</TD>
    <TD nowrap>
        <INPUT TYPE="radio" NAME="reg_type" VALUE="Biller" ONCLICK="disableSubmitter(); clearAll(); document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.vendor_ID.disabled=false;">
        <B>Vendor ID:</B>
    </TD>
    <TD WIDTH="100"><INPUT TYPE="textbox" SIZE="10" NAME="vendor_ID" ID="vendor_ID" DISABLED ONBLUR='setupAjax();' value=""></TD>
</TR>
<TR>
    <TD>Submitter ID</TD>
    <TD nowrap>
        <INPUT TYPE="radio" NAME="reg_type" VALUE="Submitter" ONCLICK="disableBiller(); clearAll(); document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.existing_Billing_ID.disabled=false;">
        <B>Billing ID:</B>
    </TD>
    <TD WIDTH="100">
        <INPUT TYPE="textbox" SIZE="10" NAME="existing_Billing_ID" ID="existing_Billing_ID" DISABLED ONBLUR='setupAjax();' value=""></TD>
    <TD><INPUT TYPE="hidden" NAME="ff_option" VALUE="N"></TD>
</TR>

这是用于启用文本框的 onblur 命令的 JavaScript

function setupAjax()
{
    var sendStr = "";

    if(document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.reg_type[1].checked && document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.vendor_ID.value.length > 0)
    {
        document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.existing_Billing_ID.value = "";
        sendStr += 'reset=false&vendor_ID=' + document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.vendor_ID.value;
        sendStr += '&existing_Billing_ID=';

    }
    else if (document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.reg_type[2].checked && document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.existing_Billing_ID.value.length > 0)
    {
        document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.vendor_ID.value = "";
        sendStr += 'reset=false&existing_Billing_ID=' + document.config_frmV_f5a46cc226670cb3a4d7e0f5a98703a0.existing_Billing_ID.value;
        sendStr += '&vendor_ID=';
    }
    else 
    {
        return;
    }

我尝试按 ID、名称、索引进行选择,你命名它,但我仍然无法填充它,尽管我可以触摸页面上的所有其他元素。我可以使用元素找到它,它会报告名称,但我无法弄清楚如何使用 Elements 填充框

【问题讨论】:

  • 这不是 Java,这是 JavaScript。 Java 之于 JavaScript 就像汽车之于地毯一样。

标签: javascript html ajax watin


【解决方案1】:

想出一个使用 JavaScript 来解决这个问题的方法,现在就像一个魅力一样!

         StringBuilder js = new StringBuilder();
            js.Append(@"var myTextField = document.getElementById('vendor_ID');");
            js.Append(@"myTextField.setAttribute('value', '201153');");
            ie.RunScript(js.ToString());

【讨论】:

  • 马克,这太棒了!一个很棒的解决方案,让我看到了 RunScript 的强大功能。干杯!
【解决方案2】:

问题:您是否尝试在禁用时在文本字段中输入值?

在启用 TextField 之前,您不能(或至少不应该)执行 mybrowser.TextField("myFieldID").TypeText("words go here") 之类的操作。

伪代码

  1. 单击单选按钮
  2. 等待文本字段启用
  3. 在文本字段中输入文本

【讨论】:

  • 不应该启用它,只要单击单选按钮,它就会停止并最终崩溃。我什至在执行 TypeText 命令之前放置了一个 Thread.Sleep(5000) 并确保它仍然没有被禁用,当它处于睡眠状态时,我可以在该字段中输入。我完全被难住了。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多