пытается войти в веб-форму в коде - PullRequest
1 голос
/ 29 сентября 2010

это форма

<form action="j_security_check" method="post">
<div id="editForm">

<h2>Login</h2>

<div class="errors"></div>

<div class="row">
    <span class="label">Username:</span>
    <span class="formw"><input type="text" name="j_username"></span>
</div>

<div class="row">
    <span class="label">Password:</span>
    <span class="formw"><input type="password" name="j_password"></span>

</div>

<div class="submit">
    <input type="submit" value="Login">
</div>
</div>

</form></body>

У кнопки Button есть имя, так что я не могу понять, как заставить это работать? кнопки имеют идентификатор или имя, поэтому я не могу использовать GetElementById или GetElementsByName

webBrowser1.Document.All.GetElementsByName("j_username")[0].SetAttribute("Value", "************");
        webBrowser1.Document.All.GetElementsByName("j_password")[0].SetAttribute("Value", "******");
        webBrowser1.Document.All["Login"].InvokeMember("click");

;

у кого-нибудь есть предложение?

1 Ответ

2 голосов
/ 29 сентября 2010

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

    HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("INPUT");
    foreach (HtmlElement elem in elems)
    {
        String valueStr = elem.GetAttribute("value");
        if (valueStr != null && valueStr.Equals("Login"))
        {
            elem.InvokeMember("click");                
        }
    }

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

...