Элемент управления WebBrowser - Получить элемент по типу? - PullRequest
4 голосов
/ 09 апреля 2011

Мне нужно получить элемент по типу в C #, HTML выглядит следующим образом:

<button type="submit" class="orangeBtn">Send Invitations</button>

И я хочу, чтобы он был в состоянии, где я могу вызвать («щелкнуть») его, но это не так.не похоже на работу в C #.Мой текущий код:

HtmlElement m_SubmitField = m_Browser.Document.All["orangeBtn"];

if (m_SubmitField != null)
    m_SubmitField.InvokeMember("click");

Есть ли альтернативный способ сделать это?

Это НЕ мой сервер, поэтому я не могу редактировать HTML или добавлять jquery.

Я делаю автоматическое приложение для отправки приглашений друзьям, к которым я хочу присоединиться, но они сделали кнопку без идентификатора или имени, как показано выше, поэтому в любом случае ее можно вызвать («щелкнуть») вC #, используя другой метод?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 09 апреля 2011

Вы можете использовать GetElementsByTagName.

var elements = m_Browser.Document.GetElementsByTagName("button");
foreach (HtmlElement element in elements)
{
     // If there's more than one button, you can check the
     //element.InnerHTML to see if it's the one you want
     if (element.InnerHTML.Contains("Send Invitations"))
     {
          element.InvokeMember("click");
     }
}
1 голос
/ 23 августа 2013

Я попробовал следующий код, и все прошло успешно.

HtmlElementCollection htmlcol = ((WebBrowser)sender).Document.GetElementsByTagName("input");
for (int i = 0; i < htmlcol.Count; i++)
            {
                if (htmlcol[i].GetAttribute("value") == "Search")
                {
                    htmlcol[i].InvokeMember("click");
                }
            }

я пробовал этот код для следующего условия

<input type="submit" value="Search">

Вы также можете попробовать такие html-теги, и я надеюсь, что это будет работать для вас ... наслаждаться

0 голосов
/ 09 апреля 2011

Что ж, кнопка без идентификатора или подобного имени будет отправлять любую форму, в которой она содержится - если вы знаете HTML, то есть ли у формы идентификатор? Если это так, вы можете найти форму по ее идентификатору и вызвать метод submit.

На самом деле вам, вероятно, будет лучше выяснить все поля этой формы, а затем просто ПОСТАВИТЬ в нее:

var inputs = new NameValueCollection();
inputs.Add("field1", "value1");
inputs.Add("field2", "value2");
inputs.Add("field3", "value3");

System.Net.WebClient Client = new WebClient();
Client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] POSTResultData = Client.UploadValues(postUrl, inputs);
...