2015-08-25 42 views
0

我做了很多網絡抓取工作來自動執行一些工作職責。我正在嘗試在此website上填充此文本框。在網站上填充文本框vb.net問題

我已經在約10個沒有問題的網站上完成了這項工作,但由於某種原因,這個問題給我帶來了麻煩。我從其他人那裏搜索了這裏的所有條目,但是我沒有看到我缺少的東西。

這是我使用的代碼。我正在使用Visual Studio 2008 9.0.3版。我也設置屬性等嘗試invokemember點擊它發現的元素,所以我知道我越來越遠,文本框只是不填充。任何幫助將非常感激。

謝謝。

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input") 
    For Each curElement As HtmlElement In theElementCollection 
     If curElement.OuterHtml.Contains("ctl00$CPHContent$txtUserID") Then 
      WebBrowser1.Document.GetElementById("ctl00_CPHContent_txtUserID").SetAttribute("value", "TEST")     
      Exit For 
     End If 
    Next 
+0

由於您知道所需元素的id,因此不需要通過標記名獲取列表並循環訪問它們。只需要WebBrowser1.Document.GetElementById(「ctl00_CPHContent_txtUserID」)就可以做到。如果它存在,則登錄表單可見。如果不存在,那麼登錄表單不可用。 –

+0

感謝您的回覆。我刪除了循環,只用一行代碼來設置屬性,但它仍然沒有填充。 – thexfilez

+0

你的代碼在哪裏寫過?什麼事件處理器? –

回答

0

這是我使用的代碼,它似乎做工精細的時間。

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 

    Dim userNameElement As HtmlElement = Nothing 

    userNameElement = WebBrowser1.Document.GetElementById("ctl00_CPHContent_txtUserID") 
    If Not Nothing Is userNameElement Then 
     userNameElement.SetAttribute("value", "TESTing") 
    End If 

End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    WebBrowser1.Navigate("https://providerportal.careimprovementplus.com/Login.aspx") 

End Sub 

第一次幾次它不會設置屬性。但是在頁面被緩存後,它每次都很完美。有可能是一個奇怪的時間問題。我敢打賭,如果你把Thread.Sleep(250)作爲DocumentCompleted事件中的第一個陳述,它可以解決你的問題。

+0

呀礦仍然沒有按」工作。一些如此簡單的事情造成了如此多的挫折: - \ – thexfilez