Używam robotnik w tle do manipulowania niektóre elementy w moim WebBrowser przy użyciu vb.net.Sprawdź, czy element istnieje w WebBrowser przy użyciu BackgroundWorker
Na przykład pracownik w tle RFIDReader
sprawdzi, czy jestem na określonym łączu.
ElseIf TerminalBrowser.Url.ToString.Contains(baseUrl + "box-office/ticket-verification") And rf_code <> "" Then
' Insert RF Code in "rf_code" hidden text field
Me.Invoke(Sub() Me.TerminalBrowser.Document.GetElementById("rf_code").SetAttribute("value", rf_code.ToLower))
End If
Co się dzieje tutaj, jeśli dotknę mojej karty RFID. Obejmuje to odpowiednią wartość do mojego elementu rf_code
w mojej przeglądarce.
Teraz chcę się przekonać, czy istnieje sam kontener (synchronize-rfid
) (ponieważ jest to pop-up). Zobacz zdjęcie w celach informacyjnych.
Oto nasz kod do tego.
If Me.TerminalBrowser.Document.GetElementById("synchronize-rfid") IsNot Nothing Then
' Code here
end if
referencyjny: https://stackoverflow.com/a/2022120/1699388
Problem polega na tym, BackgroundWorker naprawdę nie wchodzi w interakcje z UI jak na powyższym kodzie.
Czy istnieje metoda dla mnie, aby ustalić, czy ten element istnieje za pomocą pracownika tła?
Myślę, że zrobiłem to i to nie działa.
Dim synchronize_rfid = Me.Invoke(Sub() Me.TerminalBrowser.Document.GetElementById("synchronize-rfid"))
If synchronize_rfid IsNot Nothing Then
' Code here
end if
Co oznacza „to nie działa choć” oznacza? czyli wyjątek zgłoszony, a nie oczekiwany wynik itp.? – TnTinMn
@TnTinMn, sam kod nie sprawdza, czy istnieje element 'synchronize_rfid'. Próbowałem wysłać okno komunikatu wewnątrz instrukcji if, ale nie wchodzi ono w. –
'Me.Invoke (Sub() Me.TerminalBrowser.Document.GetElementById (" synchronize-rfid "))' zawsze zwróci wartość Nic, ponieważ podprogram nie zwraca wartości. Zakładając, że TerminalBrowser jest właściwym odniesieniem, musisz użyć metody lambda w funkcji lambda w twoim poleceniu 'Me.Invoke'. Powodem, dla którego mówię, że "TerminalBrowser jest właściwym odniesieniem" jest to, że wskazujesz, że element jest w wyskakującym okienku i może to być inna instancja przeglądarki. – TnTinMn