web-dev-qa-db-fra.com

C # Comment cliquer sur le bouton automatiquement via un navigateur Web

Le code HTML de ma page de clic est:

<input type="submit" id="publishButton-ns" class="ubtn ubtn-block"
 name="publish" tabindex="10" value="Publish Post">

J'ai essayé ce code pour cliquer:

webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("click");

mais cela pas trouvé le bouton.

15
Misha

Cela peut vous aider.

<input type="submit" value="Submit" />

HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");  
foreach (HtmlElement el in elc)  
{  
   if (el.GetAttribute("type").Equals("submit"))  
   {  
        el.InvokeMember("Click");  
   }  
 }
25
Ponmalar

Attendez-vous que la page soit chargée en premier? Vous devez lier une fonction de votre code pour attendre le chargement de la page. Cliquez sur le bouton:

static void form1_Load() {
    // ...
    webBrowser1.onDocumentReady += webBrowser_DocumentReady;
}

static void webBrowser1_DocumentReady() {
    webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
}
5
kirb

Essayez une combinaison de la suggestion de @ adam et capitalisez Click

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document
        .GetElementById("ctl00_main_LoginExpoPlanIt_LoginButton")
        .InvokeMember("Click");
}

Je viens de tester cela et cela ne fonctionnait pas avec "click" mais avec "Click" :)

J'utilise .net 4

2
MikeM

EDIT: Cela ne s’applique que lorsque runat="server" est défini, ce n’est pas applicable dans ce cas mais laisser aux autres au cas où, excusez-moi de l’avoir omis de la question.

ASP.Net change le nom des éléments qu’il rend en fonction de la structure dans laquelle ils se trouvent. Vous pouvez essayer ce qui suit pour obtenir le nom final de l’élément:

webBrowser1.Document.GetElementById("<%=publishButton-ns.ClientID%>").InvokeMember("click");
0
Guvante