#

C# MSHTML: Suche mit getElementsByTagName

 

Suche nach einem HTML Element über das HTML-Tag, welches keinen eindeutigen Namen hat.

 

Beispiel:

Mit getElementsByTagName("input") holt man alle Eingabe-Elemente in eine Colletion mshtml.IHTMLElementCollection elements.

Diese kann man anschliessend durchlaufen und auf das name Attribut untersuchen.

mshtml.IHTMLElementCollection elements = doc.getElementsByTagName("input");

 

    foreach (mshtml.HTMLInputElement  vElement in elements)

    {

        if (vElement.name.StartsWith("command_") && vElement.name.EndsWith(".anmelden"))

        {

                vElement.click();

        };

    }

 

 

Beispiel: Suche Input Button

Dabei wird im HTML Dokument ein HTML Element gesucht, welches das Tag <input> verwendet.

Da man bei der Suche mit doc.getElementsByName(„nicht mit * Wildcard“) nicht mit Wildcards suchen kann, muss man einen Loop durch alle Input Elemente vornehmen

<input class="UnitCommand" name="command_2967516.anmelden" onclick="return checkSubmit('Anmelden');" type="submit" value="Anmelden">

 

Im Browser stellen sich die Eingabefelder und der Input-Button wie hier dar:

 

In diesem Beispiel wird mit einem WPF Browser Control das Login einer eigenen Webseite durchsucht.

 

C# Code zum Einstellen von User und Passwort und anschliessendem Suchen des Submit Buttons.

Der Submit wird in diesem Fall mit einem HTML Input Element ausgeführt.

        private void get_Results()

        {

            //-------------------< get_Results() >-------------------

 

            mshtml.HTMLDocument doc = (mshtml.HTMLDocument)ctlBrowser.Document;

           

 

            //< eingabe fuellen >

            mshtml.IHTMLElement element = doc.getElementById("txtBenutzerkennung");

            if (element != null)

            {

                element.innerText = tbxBenutzerkennung.Text ;               

            }

 

            element = doc.getElementById("pwdPin");

            if (element != null)

            {

                element.innerText = tbxPasswort.Password;

            }

            //</ eingabe fuellen >

 

 

 

            //< button clicken >

            mshtml.IHTMLElementCollection elements = doc.getElementsByTagName("input");

 

            foreach (mshtml.HTMLInputElement  vElement in elements)

            {

                if (vElement.name.StartsWith("command_") && vElement.name.EndsWith(".anmelden"))

                {

                    vElement.click();

                };

            }

            //</ button clicken >

 

        }

 

 

 

Im XAML gesamt:

Das HTML Dokument wird mit einem WebBrowser Control empfangen.

<Window x:Class="download_Raiba.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:download_Raiba"

        mc:Ignorable="d"

        Title="MainWindow" Height="388.081" Width="733.184">

    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >

        <WebBrowser x:Name="ctlBrowser" Margin="21,79,53.6,19.4"/>

        <Button x:Name="btnStart" Content="Start" HorizontalAlignment="Left" Margin="21,10,0,0" VerticalAlignment="Top" Width="75" Click="btnStart_Click"/>

        <TextBox x:Name="tbxURL" Height="19" Margin="180,14,53.4,0" TextWrapping="Wrap" Text="https://www.rb-test.de/banking-private/entry" VerticalAlignment="Top"/>

        <TextBox x:Name="tbxBenutzerkennung" Height="19" Margin="183,48,0,0" TextWrapping="Wrap" Text="1234567890" VerticalAlignment="Top" HorizontalAlignment="Left" Width="79"/>

        <Label x:Name="lblBank" Content="Bank:" HorizontalAlignment="Left" Margin="119,10,0,0" VerticalAlignment="Top"/>

        <Label x:Name="lblBenutzerkennung" Content="Benutzer:" HorizontalAlignment="Left" Margin="119,44,0,0" VerticalAlignment="Top"/>

        <PasswordBox x:Name="tbxPasswort" Height="19" Margin="338,48,343.4,0" Password="1234567890" VerticalAlignment="Top" />

       

        <Label x:Name="lblPasswort" Content="Passwort:" HorizontalAlignment="Left" Margin="279,44,0,0" VerticalAlignment="Top"/>

    </Grid>

</Window>

 

Mobile

.

0123movie.net