WatiN не может найти текстовое поле по идентификатору или имени - PullRequest
1 голос
/ 26 августа 2011

Я весь вечер бился головой об стену, может кто-нибудь подсказать, как я могу ввести WatiN для ввода текста в это текстовое поле?Он отключен, пока не выбрана радиокнопка, и я в растерянности ... Я все еще немного новичок во всем этом, чтобы успокоиться

<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>

Вот код JavaScript для команды onblur длявключить текстовое поле

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, Name, Index, вы назвали его, и я все еще не могу заполнить его, несмотря на то, что я могу касаться любого другого элемента на странице .. Я могучтобы найти его с помощью элемента, и он сообщит имя, однако я не могу понять, как заполнить поле с помощью элементов

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

Мы нашли способ обойти эту проблему с помощью JavaScript, работающего как шарм!

         StringBuilder js = new StringBuilder();
            js.Append(@"var myTextField = document.getElementById('vendor_ID');");
            js.Append(@"myTextField.setAttribute('value', '201153');");
            ie.RunScript(js.ToString());
0 голосов
/ 26 августа 2011

Вопрос: Вы пытаетесь ввести значение в текстовое поле, пока оно отключено?

Вы не сможете (или, по крайней мере, не должны) делать что-то вроде mybrowser.TextField ("myFieldID").") .TypeText (" слова идут сюда "), пока TextField не будет включен.

Псевдокод

  1. Нажмите кнопку-переключатель
  2. Подождитечтобы текстовое поле стало активным
  3. Введите текст в текстовое поле
...