如何以编程方式单击Web浏览器控件中的Facebook“发布”按钮

时间:2015-05-17 18:02:07

标签: c# facebook webbrowser-control sendkeys

我有一个加载facebook的webbrowser控件,使用SendKeys写一条消息,但我找不到“点击”Post按钮的方法。

我尝试过这样的事情:

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

当我在常规网页浏览器中使用'inspect elements'时,以下html代码似乎是Post按钮。

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

我已经尝试了所有这五个字符串,认为是按钮名称,但当我尝试使用button.InvokeMember("Click");点击它们时它们都为空

这让我疯了。是的,我知道我可以使用facebook API,但我发现它令人困惑,他们的上次更新破坏了我的程序。

1 个答案:

答案 0 :(得分:4)

要使用GetElementById,您需要提供元素的ID属性值。您提供的按钮元素没有设置ID属性。

您可以做的是获取所有按钮元素的集合:

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

并过滤一个属性&#34; class&#34;值&#34; _42ft _4jy0 _11b _4jy3 _4jy1选择_51sy&#34;:

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

<强> BUT!使用这种方法是一个非常糟糕的主意,因为一旦他们更改了此元素的class属性值,您将获得null并且必须更新代码。我强烈建议您使用他们的API。