Visual Basic.NET - WebBrowser, HtmlElementCollection y System.NullReferenceException

 
Vista:
sin imagen de perfil

WebBrowser, HtmlElementCollection y System.NullReferenceException

Publicado por ricard (13 intervenciones) el 10/03/2018 13:29:44
Este programita es para automatizar actualizaciones en una pagina web

Funciona de maravilla cuando separo los elementos en diferentes Sub's
Pero en el momento en que adjunto todo el código en el Form_Load, los elemtos del WebBrowser me da el maldito error
System.NullReferenceException: 'Object reference not set to an instance of an object.' en la linea

Dim elementos As HtmlElementCollection = BrowserSepulveda.Document.All en la línea 17

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Imports System.IO
Imports System.Collections
Imports System.Threading
 
Public Class Login
 
    Dim URLs As String()
    Dim UrlIndex As Integer = 0
    Dim Contador As Integer = 0
    Dim Hora As Date
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        BrowserSepulveda.Navigate("http://192.155.1.23/mis/?logout")
 
 
       Dim elementos As HtmlElementCollection = BrowserSepulveda.Document.All
 
        For Each elemento As HtmlElement In elementos
            If elemento.GetAttribute("id") = "email" Then
                elemento.SetAttribute("value", TextBox1.Text)
            End If
            If elemento.GetAttribute("id") = "contra" Then
                elemento.SetAttribute("value", TextBox2.Text)
            End If
 
            If elemento.GetAttribute("value") = "SEND >>" Then
                elemento.InvokeMember("click")
            End If
        Next
 
        Dim path As String = "C:\okdk1.txt"
 
        URLs = File.ReadAllLines(path)
        BrowserSepulveda.Navigate(URLs(UrlIndex))
 
        TextBox4.AppendText(URLs(UrlIndex) & vbNewLine) 'TEST
 
 
        Dim element As HtmlElement = BrowserSepulveda.Document.GetElementById("cada")
        Dim month As HtmlElement = element.GetElementsByTagName("option").Cast(Of HtmlElement).First(Function(el) el.GetAttribute("value") = "0")
        month.SetAttribute("selected", "true")
 
        BrowserSepulveda.Navigate("javascript:function alert() {};")
 
 
        Timer2.Start()
 
        UrlIndex += 1
 
        If UrlIndex >= URLs.Length Then 'Controla final de archivo
 
            Exit Sub
 
        End If
 
        TextBox4.AppendText(URLs(UrlIndex) & vbNewLine)
        Console.WriteLine(Contador)
 
        BrowserSepulveda.Navigate(URLs(UrlIndex))
        Timer2.Stop()
 
    End Sub
 
 
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 
        Label1.Text = String.Format("{0:HH:mm}", DateTime.Now)
        TextBox3.Text = String.Format("{0:HH:mm}", DateTime.Now)
 
    End Sub

End Class
Sé que por alguna razón hay algo no definido, pero la verdad es el primer programa que hago (dos semanas) y ya no sé por donde tirar, mis conocimientos de prueba-error ya han llegado al límite con él.


Gracias de antemano
Capture
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kingk
Val: 173
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

WebBrowser, HtmlElementCollection y System.NullReferenceException

Publicado por kingk (77 intervenciones) el 10/03/2018 16:18:56
Hola, el probrema puede ser que te resulta nulo en esa parte del codigo porque el documento no termina de cargarse ccuando se ejecuta la linea de codigo. Esta sería una opción:

1
2
3
4
5
6
7
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    BrowserSepulveda.Navigate("http://192.155.1.23/mis...")
    Dim elementos As HtmlElementCollection
    While BrowserSepulveda.IsBusy
        elementos = Nothing
    End While
    elementos = BrowserSepulveda.Document.All

Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

WebBrowser, HtmlElementCollection y System.NullReferenceException

Publicado por ricard (13 intervenciones) el 11/03/2018 09:13:37
Gracias, pero tengo el mismo error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

WebBrowser, HtmlElementCollection y System.NullReferenceException

Publicado por ricard (13 intervenciones) el 11/03/2018 09:25:09
Me han comentado que debo de hacer el evento BrowserSepulveda.DocumentCompleted después del .navigate, pero no tengo ni idea como conseguir meter una Private Sub dentro de la Private Sub de Form_Load

Soy un lerdo en esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar