GetElementById找不到webbrowser

时间:2016-05-25 17:17:20

标签: javascript c# html

我试图通过使用HTML和JavaScript的网页自动导航。我使用C#来做这件事,并且长时间没有使用它,所以我很生疏,这是我设法提出的最好的(包括尝试webBrowserEvents2)。

我到目前为止所附的内容如下。一切运行正常,直到第5个while语句继续作为无限循环,即使有问题的元素在Web浏览器中可见。

我已经在第一个方法中注释了第5个while语句及其下面的所有内容,然后使用第二个方法列出了Web浏览器中具有ID的所有元素。我发现列出的所有元素都属于上一页,即使它不再可见。

早期的while语句中没有出现此问题,所以我不确定问题是什么。我尝试刷新,更新和无效的Web浏览器,这没有用。是什么导致这种情况发生?

    //Start navigation 
    private void goButton_Click(object sender, EventArgs e)
    {
        //Load Login page
        webBrowser1.Navigate(site);
        while (webBrowser1.Document.GetElementById("gwt-uid-27") == null) 
        {
            Application.DoEvents();
        }
        Console.WriteLine("Login page loaded");

        //Login
        webBrowser1.Document.GetElementById("gwt-uid-27").SetAttribute("value", password);
        webBrowser1.Document.GetElementById("gwt-uid-37").InvokeMember("click");
        while (webBrowser1.Document.GetElementById("popup_0") == null)
        {
            Application.DoEvents();
        }
        while (webBrowser1.Document.GetElementById("popup_0") != null)
        {
            Application.DoEvents();
        }
        Console.WriteLine("Login Successful");

        //Navigate to timesheets page
        webBrowser1.Document.GetElementById("gwt-uid-48").InvokeMember("click");
        while (webBrowser1.Document.GetElementById("add-time") == null)
        {
            Application.DoEvents();
        }

        //Go to 'Select date' page
        webBrowser1.Document.GetElementById("add-time").InvokeMember("click");
        while (webBrowser1.Document.GetElementById("gwt-uid-120") == null)
        {
            Application.DoEvents();
        }

        //Enter date
        string date = String.Format("{0:yyyy-M-d}", dateTimePicker);
        webBrowser1.Document.GetElementById("gwt-uid-120").SetAttribute("value", date);
        webBrowser1.Document.GetElementById("gwt-uid-125").InvokeMember("click");
}

private void secondary_Click(object sender, EventArgs e)
    {
        var v = webBrowser1.Document.All;
        List<string> c = new List<string>();

        foreach (HtmlElement h in v)
        {
            if (h.Id!=null) c.Add(h.Id);    
        }

        Console.WriteLine("done");
    }

自发布以来,我已经在VBA中编写了相同的方法,没有任何问题,也无法找出原因。

0 个答案:

没有答案