1

Тема: Автозаповнення полів login password в webBrowser

У webbrowser завантажується сторінка. В події  WebBrowser_DocumentCompleted роблю щось типу такого:

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElementCollection elems = webBrowser.Document.All;

    foreach (HtmlElement elem in elems)
    {
        String nameStr = elem.Id;

        if (nameStr == "username")
        {

            elem.InnerText = "Isuperstar";
        }
    }
}

Прикладів як це робити багато, деякі спробував, але поки нічого не вийшло.

Може це з-за цього, що там автозаповнення заборонене???

Поле вводу username:

<input id="username" type="text" maxlength="30" placeholder="username" style="width: 150px" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false" autofocus="" required="">

Поле вводу password:

<input id="password" type="password" maxlength="30" placeholder="password" style="width: 150px" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false" required="">

Якщо це так, є якісь способи обійти це?

2

Re: Автозаповнення полів login password в webBrowser

А elem.value пробували?

λ–програміст. Програмую PHP.

3

Re: Автозаповнення полів login password в webBrowser

javascriptIsLife написав:

А elem.value пробували?

немає такого поля як "value".

4

Re: Автозаповнення полів login password в webBrowser

Ага, з заповненням полів вже вийшло:

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElementCollection elems = webBrowser.Document.All;

    foreach (HtmlElement elem in elems)
    {
        String nameStr = elem.Id;

        if (nameStr == "username")
        {
            elem.SetAttribute("value", "sameusr");                    
        }
        else if (nameStr == "password")
        {
            elem.SetAttribute("value", "samepass");                
        }
        else if (nameStr == "loginButton")
        {                    
            elem.InvokeMember("click");
        }
    }            
}

Автозаповнення працює, а от кнопка не натискається сама по собі.

Є думки?

5 Востаннє редагувалося taburyak (11.09.2017 12:05:27)

Re: Автозаповнення полів login password в webBrowser

Всім привіт!
Ще одна річ по темі.

Є контролер "AC Smart Premium V-Net Central Controller". Є до нього Web доступ. Наприклад, набираю його IP в локальній мережі, і потрапляю на сторінку де пропонується ввести логін і пароль. Сторінка ця, це:

<html><head><title> LG ACSmart Premium </title></head>
  <body>
  <embed src="Main.swf" width="1024" height="600" seamlesstabbing="false">  
</body></html>


Маємо flash сторінку.
А от чи є можливість якось автоматично заповнити логін і пароль у такому випадку?
Бо щось гуголь не дуже допомагає. Або я не знаю як цей випадок пошукати в гуглі.

І ще в додачу питання трішки не в тему. От я маю доступ до вєб-морди цього контролера, це все добре. Там я можу дивитись спожиту електрику, коли було увімкнено щось, а коли вимкнено і таке інше.  Але хотілось би, ці та інші данні отримувати через свою програму. Як такі речі робляться взагалі? Це потрібні якісь API від виробника цих контролерів? Чи як? Я не про конкретно цей контролер, а взагалі.
Бо від мене щось хочуть, а я не розумію що. І куди "копати".

6

Re: Автозаповнення полів login password в webBrowser

Можливо це не так але по тому коді що ви виклали в 4 пості можилва ситуація що перший елемент в колекції elems буде сабміт кнопка і по тому коді виходить що ви її можете натискати до того як ввели юзер нейм і пароль.

Ну і ще ідея але це супер маловірогідно, в першому прикладі який я нагуглив як натиснути кнопку

 elem.InvokeMember("click");

в слові click перша буква була велика.

Подякували: taburyak1

7

Re: Автозаповнення полів login password в webBrowser

truesupport написав:

Можливо це не так але по тому коді що ви виклали в 4 пості можилва ситуація що перший елемент в колекції elems буде сабміт кнопка і по тому коді виходить що ви її можете натискати до того як ввели юзер нейм і пароль.

Дякую за зауваження. В цьому є залізна логіка, я про це й не подумав. При нагоді перевірю. Ще раз дякую.