2015-05-17 46 views
2

我有一個web瀏覽器控件加載Facebook,使用SendKeys編寫消息,但我找不到'點擊'發佈按鈕的方法。我怎樣才能以編程方式點擊網頁瀏覽器控件中的Facebook'發佈'按鈕

我曾嘗試這樣的東西:

HtmlElement button = webBrowser1.Document.GetElementById("_42ft"); 
button.InvokeMember("Click"); 

當我用「檢查元素」在常規webbrowers,下面的HTML代碼似乎是郵政按鈕。

<button class="_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy" type="submit" value="1" data-ft='{"tn":"+{"}'>Post</button> 

我已經嘗試了所有這5個字符串思維是按鈕的名稱,但它們都是空當我嘗試點擊他們button.InvokeMember("Click");

這是推動我堅果。是的,我知道我可以使用Facebook API,但我發現它很混亂,他們的最新更新打破了我的程序。

+0

用'u_0_l'試試它,因爲我在Chrome中看到這個值... – cramopy

+1

我遠離web開發的專家,但乍一看,它在我看來像你可能有'Id'和'class '混了起來。如果我沒有記錯,你應該通過'HtmlElementCollection coll = webBrowser1.Document.GetElementsByClassName(「_ 42ft _4jy0 _11b _4jy3 selected _51sy'>然後迭代該集合來找到正確的按鈕 - 然後我不知道很多關於這個,所以我可能完全錯誤 – Yorrick

回答

4

要使用GetElementById,您需要提供元素的ID屬性的值。您提供的按鈕元素沒有設置ID屬性。

你可以做的就是收集所有按鈕元素:

var buttons = Document.GetElementsByTagName("button"); 

,並與屬性篩選它們的一個 「類」 值 「_42ft _4jy0 _11b _4jy3 _4jy1選擇_51sy」:

var postButton = buttons.SingleOrDefault(x => x.GetAttribute("class").Equals("_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy")); 

但是!使用這種方法是一個非常糟糕的主意,因爲一旦它們改變了這個元素的class屬性值,你將會得到null並且必須更新你的代碼。我強烈建議你使用他們的API。

+0

我知道這不是最大的方法,但API不再允許您以編程方式張貼到Facebook組,除非你是該組的管理員。 – user2972161

+0

看看https:// www .facebook.com /法律/條款要點3.2 – Tobi

相關問題