我有一个加载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,但我发现它令人困惑,他们的上次更新破坏了我的程序。
答案 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。