2015-08-24 2 views
0

Так что я устанавливаю значение текстового поля, затем я нажму кнопку, чтобы отправить запрос. Значение в текстовом поле показывает, что я хочу, но когда я вызываю щелчок кнопки, веб-сайт выводит на странице сообщение об ошибке, как если бы значение текстового поля было пустым (хотя я смотрю на него, и он показывает что я хотел).веб-страница не распознает текст, введенный в текстовое поле

Теперь, если я вручную нажму кнопку, он по-прежнему считает, что текстовое поле пуст. Но если я вручную нажму на текстовое поле (просто кликнуть, ничего не меняйте), тогда вручную нажмите на кнопку, она работает.

Таким образом, очевидно, что-то происходит за кулисами, что требует текстового поля имели фокус перед страницы будет понятно, что было напечатано в.

private void SetText(string elementID, string text) 
    { 
     foreach (HtmlWindow hw in this.webBrowser1.Document.Window.Frames) 
     { 
      HtmlElement element = hw.Document.GetElementById(elementID); 
      if (element != null) 
      { 
       element.SetAttribute("value", text); 
       // here's where I'm trying things 
       break; 
      } 
     } 
    } 

Вот что я пытался (не уверен, что все эти были даже действительными вещами, но я все равно их пробовал:

Я попытался настроить фокус на текстовое поле, а затем удалить его, установив его на элемент button.Focus(), а затем кнопку.Focus() до нажмите кнопку.

Я попытался вызвать измененный элемент event.InvokeMember («change»), element.InvokeMember («changed»), element.InvokeMember («onchange»), element.InvokeMember («textchanged»).

Я попытался вызвать фокусное событие - element.InvokeMember («focus»).

Я пробовал ссылаться на событие lostfocus - element.InvokeMember ("lostfocus").

Я понятия не имею, что такое веб-страница, которая, как ожидается, будет запущена, когда кто-то на самом деле набирает текст в текстовое поле, но это, по-видимому, препятствует тому, чтобы страница «видя» то, что было там размещено моим кодом.

Любые идеи?

+0

Я бы начал с попытки попробовать поймать тело тела SetText. Также пройдите через него с точками останова. Еще одна вещь, которая приходит на ум, - вызов Application.DoEvents() в конце вашего метода. –

ответ

0

Оказывается, было 3 текстовых поля (каждое с немного другим именем), которые каким-то образом взаимосвязаны. Значение всех 3 должно быть установлено до того, как кнопка будет работать правильно. Я думал, что я пробовал это, но, возможно, я не делал все 3 раньше, или, может быть, я их не в порядке. Тьфу.

Смежные вопросы