fattysc Ответов: 2

Как установить значение GetElementById через текстовое поле


Я пытаюсь выяснить, как автоматически заполнить два текстовых поля, расположенных на веб-сайте, встроенном в мою форму windows, с помощью двух текстовых полей, также находящихся в моей форме windows. Идентификатор одного из текстовых полей-это электронная почта. Идентификатор другого текстового поля-пароль. Я знаю, что могу найти идентификатор элемента текстового поля в браузере Embedded в моей форме windows, используя этот код ниже. Сначала я опубликую определение.

public void ExecuteScriptAsync(string script);


Это код, используемый для получения идентификатора.

browser.ExecuteScriptAsync("document.getElementById('Email')")

browser.ExecuteScriptAsync("document.getElementById('Password')")


Что, в свою очередь, я могу установить значение/текст указанного текстового поля с помощью этого кода. Приведенный ниже код отлично работает и установит значение/текст обоих текстовых полей.

browser.ExecuteScriptAsync("document.getElementById('Email').value= 'USER EMAIL STRING'");

browser.ExecuteScriptAsync("document.getElementById('Password').value= 'USER PASSWORD STRING'");


У меня есть два текстовых поля в моей форме windows с именем txtEmail и txtPassword, которые я хотел бы использовать, чтобы пользователь мог ввести свою собственную регистрационную информацию. Я пытался достичь этого среди других способов, передавая txtEmail.Текст и txtPassword.Текст в коде ниже, который не работает.

string Email = @"""document.getElementById('Email').value= " + @"'" + txtEmail.Text + @"'""";


string Password = @"""document.getElementById('Password').value= " + @"'" + txtPassword.Text + @"'""";


browser.ExecuteScriptAsync(Email);
browser.ExecuteScriptAsync(Password);




Я не получаю никаких ошибок внутри IDE разработчика. Он просто не будет устанавливать текст текстового поля во встроенном браузере. Может ли кто-нибудь объяснить, как использовать текстовое поле в моей форме windows для передачи необходимых строк?

Edit: переформулировал вопрос более подробно. Надеюсь, это лучше поможет объяснить мой вопрос.

Sergey Alexandrovich Kryukov

Кулак и главный вопрос: почему?

Не существует такой вещи, как "getElementById value". getElementById-это функция, которая фактически ищет элемент.

Просто будьте логичны: как вы можете установить значение атрибута с помощью любого метода "get***"? :-)
Если вам нужно установить значение атрибута, установите его.

—СА

ChintanShukla

Почему бы вам просто не использовать runat="сервер"?

2 Ответов

Рейтинг:
14

fattysc

Я и сам это понял. Тем не менее здесь есть код, необходимый для ввода данных текстового поля в строку. Таким образом, вы можете использовать его в сочетании со скриптом для ExecuteScriptAsync в CefSharp, если форма имеет два текстовых поля соответственно с электронной почтой идентификатора и паролем.



browser.ExecuteScriptAsync("document.getElementById('Email').value=" + '\'' + txtEmail.Text + '\'');
                    browser.ExecuteScriptAsync("document.getElementById('Passwd').value=" + '\'' + txtPassword.Text + '\'');


Рейтинг:
1

Member 11364825

private void browserView1_FinishLoadingFrameEvent (object sender, FinishLoadingEventArgs e)

{

if (e.IsMainFrame)

  {

   DOMDocument document = e.Browser.GetDocument();
   DOMInputElement userName = (DOMInputElement)document.GetElementByName("j_username");
   DOMInputElement pass = (DOMInputElement)document.GetElementByName("j_password");                    
   userName.Value = "HackStar";
   pass.Value = "HackStar";  

  }
}


Richard Deeming

ТРИ С ПОЛОВИНОЙ ГОДА слишком поздно!