如何以编程方式单击网络浏览器控件内的 facebook 'Post' 按钮
How can I programatically click the facebook 'Post' button inside a webbrowser control
我有一个加载 facebook 的网络浏览器控件,使用 SendKeys 编写消息,但我找不到 'click' 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>
我已经尝试了所有这 5 个字符串,认为它们是按钮名称,但是当我尝试用 button.InvokeMember("Click");
单击它们时它们都是空的
这让我抓狂。是的,我知道我可以使用 facebook API,但我觉得它很混乱,他们的最后更新破坏了我的程序。
要使用 GetElementById,您需要提供元素的 ID 属性值。您提供的按钮元素没有设置 ID 属性。
您可以做的是获取所有按钮元素的集合:
var buttons = Document.GetElementsByTagName("button");
并筛选出属性 "class" 值为“_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy”的一个:
var postButton = buttons.SingleOrDefault(x => x.GetAttribute("class").Equals("_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy"));
但是!使用这种方法 是一个非常糟糕的主意,因为一旦他们更改此元素上 class 属性的值,您将得到 null 并且必须更新您的代码。我强烈建议您使用他们的 API.
我有一个加载 facebook 的网络浏览器控件,使用 SendKeys 编写消息,但我找不到 'click' 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>
我已经尝试了所有这 5 个字符串,认为它们是按钮名称,但是当我尝试用 button.InvokeMember("Click");
这让我抓狂。是的,我知道我可以使用 facebook API,但我觉得它很混乱,他们的最后更新破坏了我的程序。
要使用 GetElementById,您需要提供元素的 ID 属性值。您提供的按钮元素没有设置 ID 属性。
您可以做的是获取所有按钮元素的集合:
var buttons = Document.GetElementsByTagName("button");
并筛选出属性 "class" 值为“_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy”的一个:
var postButton = buttons.SingleOrDefault(x => x.GetAttribute("class").Equals("_42ft _4jy0 _11b _4jy3 _4jy1 selected _51sy"));
但是!使用这种方法 是一个非常糟糕的主意,因为一旦他们更改此元素上 class 属性的值,您将得到 null 并且必须更新您的代码。我强烈建议您使用他们的 API.