2014-09-30 80 views
-2

有點奇怪,但它似乎沒有什麼在Winforms c#中的Web瀏覽器中的「佔位符」。c#在網頁瀏覽器中輸入的佔位符

在我的測試程序中,我試圖通過它的「佔位符」從網站獲取特定的輸入字段並在該字段中設置值。名稱和班級總是不同,唯一的「足跡」是佔位符。

例如在某個網站的html中,有此代碼的輸入字段: <input type="text" name="Username" placeholder="Username">問題是通過查找佔位符在字段中設置值。

我走了輸入元素搭配: HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName("input"); 和搜索帶環htmlcol[i].GetAttribute("placeholder").Equals("Username").特定的輸入它只是不工作

任何想法或如何解決問題的例子嗎?

感謝

+0

你在問什麼? – xxbbcc 2014-09-30 19:24:25

+2

他希望通過查找具有指定值的「佔位符」屬性來獲取元素......他的問題非常明確 – Jonesopolis 2014-09-30 19:25:30

+0

也許我的問題不夠清楚,可能會令人困惑。例如在一些網站的html中,有這個代碼的輸入字段: 問題是通過查找佔位符。 希望你現在就能理解我:) – 2014-09-30 19:34:47

回答

0

測試2天之後我發現有在通過web瀏覽器訪問時,在輸入字段內的佔位符(不包括名稱,標識,類和類似內容)中的innerHtml中沒有任何內容。我嘗試訪問像htmlcol[i].GetAttribute("placeholder").Equals("Username");,但由於某種原因,它沒有奏效。

什麼工作對我來說是OuterHtml,這樣的事情:

HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName("input"); 
for (int i = 0; i < htmlcol.Count; i++) 
    { 
    if (htmlcol[i].OuterHtml.Contains("Username")) 
     { 
      htmlcol[i].SetAttribute("value", pUsername.Text); 
     } 
} 

我希望我的回答將幫助有關這個問題有人。

謝謝

0

首先你需要獲得該容器元素,那麼你可以設置值,它的價值

例如,

 HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName("input"); 

     foreach(HtmlElement he in htmlcol){ 
     if(he.innerHtml.Contains("Username")) 

     he.SetAttribute("value",yourstring); 
     break; 
     } 
+0

我已經在輸入元素: 'HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName(「input」);'並用循環'htmlcol [i] .GetAttribute(「placeholder」)搜索特定輸入。 「用戶名」)'。這只是不工作 – 2014-09-30 21:15:00

+0

你的代碼應該像我一樣工作,但事情是,由於未知的原因有空異常,就像在Web瀏覽器中不存在佔位符。 乾杯 – 2014-10-01 12:37:37

+0

好吧,然後檢查元素是否爲空之前,如果語句...像這樣if(he!= null){if(he.innerHtml ...} – 2014-10-01 13:54:08