• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - Jak dostać się do klasy elementu (GetElementById)

Object Storage Arubacloud
+1 głos
505 wizyt
pytanie zadane 16 lipca 2015 w C# przez Voudubu Użytkownik (740 p.)

Witam,

Robię tak skromnie swoją pierwszą małą aplikację i mam pewien problem. Chciałbym, aby ta aplikacja automatycznie logowała się na stronę (np. na takiego facebooka). Problem polega na tym, że na facebooku takie logowanie działa, bo korzystam w kodzie z (GetElementById) i w strukturze facebooka, w htmlu jest faktycznie te id danej rzeczy zawarte np:

pole do wpisania e-maila ma id = email

pole do wpisania hasła ma id = pass

button do klikniecia zaloguj ma id = v_o_n

Kod wygląda tak:

        private void button1_Click(object sender, EventArgs e)
        {

            webBrowser1.Document.GetElementById("email").SetAttribute("value", textBox1.Text);
            webBrowser1.Document.GetElementById("pass").SetAttribute("value", textBox2.Text);
            webBrowser1.Document.GetElementById("u_0_n").InvokeMember("click");
        }

Wszystko działa jak należy. Mój problem jednak polega na tym, że jak chcę już na inną stronę przerobić tą aplikacje, żeby na inną stronę się logowała to niestety nie daje rady, bo na tej stronie nie ma zdefiniowanych id a są classy i właśnie nie mogę sobie z tym poradzić...

Znalazłem w necie pomocny (?) kod, ale nie wiem za bardzo jak go zastosować

static IEnumerable<HtmlElement> ElementsByClass(HtmlDocument doc, string className)
{
  foreach (HtmlElement e in doc.All)
    if (e.GetAttribute("className") == className)
      yield return e;
}

Mógłby jeszcze ktoś wytłumaczyć o co chodzi z 

InvokeMember("click")

Bo jeśli zmienie choć jedną literkę w tym stringu to już moja aplikacja nie kliknie przycisku "Zaloguj", byłem pewien, że ten "click" jest nazwą tylko dla mnie, a to chyba jakaś metoda jest czy coś w tym stylu laugh

1 odpowiedź

+1 głos
odpowiedź 17 lipca 2015 przez Voudubu Użytkownik (740 p.)

// Udało mi się znaleźć rozwiązanie i teraz wszystko działa. Wystarczy dodać jeszcze do kodu:

var elmnt = ElementsByClass(webBrowser1.Document, "button");
            elmnt.FirstOrDefault().InvokeMember("click");

Podobne pytania

0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 13 października 2021 w C# przez dave91 Początkujący (480 p.)
0 głosów
1 odpowiedź 167 wizyt
pytanie zadane 26 marca 2018 w C# przez Arjen Użytkownik (860 p.)
0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 27 grudnia 2016 w C# przez michal Mądrala (5,560 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...