2016-05-30 99 views
0

我還挺新的C#(花了我的時間在delphi之前),我無法找到這一點:C#閱讀改變進度的值在網頁瀏覽器

網站的HTML代碼是這樣的:

<div class="progress-bar progress-bar-danger" id="counter" style="width: 10.%; overflow: hidden;"></div> 

我試圖找出某事像這樣:

var CheckValue = webBrowser1.Document.GetElementById("counter"); if (counter.style.width > 70%) { //code } 

所以基本上什麼即時試圖做的是: 我要檢查進度的網站上的寬度我st填滿了70%以上,如果是的話,它會執行一個代碼,但如果沒有,它會在幾秒後再試一次。

如果您需要更多信息,請告訴我!

感謝

+0

您沒有任何變量'counter'。你可以使用'CheckValue.Style',它將返回一個包含樣式的字符串。 – Ivar

+0

謝謝你的回答!那麼我怎麼才能從進度條中取得寬度的值呢,因爲我只需要那個呢? – userlip

+0

你可以使用正則表達式。你需要找到'width:'和'%'之間的值。如果你有,並將其轉換爲整數,你可以看看它是否高於70. – Ivar

回答

0

您可以使用CheckValue.Style,這將返回包含風格的字符串。然後你可以使用Regex找到你正在尋找的東西。

你想要你的正則表達式匹配width:.%之間的數字。您可以使用此爲:

width: ([0-9]+(\.[0-9]+)?)\.?% 

這將每個字符串開始width:%%.的可能性結束匹配,至少有1個字符9介於0和

您可以使用此代碼獲取此值:

var checkValue = webBrowser1.Document.GetElementById("counter"); 

Regex regex = new Regex("width: ([0-9]+(\\.[0-9]+)?)\\.?%"); 
Match match = regex.Match(checkValue.Style); 

// Check if match found 
if (match.Groups.Count > 1) 
{ 
    String s = match.Groups[1].ToString(); 
    int width = (int)Convert.ToDouble(s); 
} 
+0

謝謝你太多了!我只剩下兩個問題:S 如果「%」之前的數字是這樣的72.3213%,那麼代碼仍然會按照預期工作(我在點之前獲取數字) 對於我來說在第4行的yor代碼中,我「無法從System.WIndows.Forms.HtmlElement轉換爲字符串。」 在Internet上找不到任何解決方案:(您對它可能是什麼想法? 謝謝! – userlip

+0

沒關係,我明白了! 非常感謝你! – userlip

+0

你說得對。正則表達式並沒有將浮點數轉化爲一個數,它會崩潰。我只是修復它。我忘記了'checkValue'背後的'.Style',這導致了你得到的錯誤。 – Ivar