使用C#代码发布到facebook群组
我正在开发一个windows应用程序,其中嵌入了webbroswercontrol。我试图将示例消息发布到一个开放的facebook群组。我无法用c#更改文本框的值。当我自动点击时,它会显示文本框值为空。解决办法是什么使用C#代码发布到facebook群组,c#,facebook,post,C#,Facebook,Post,我正在开发一个windows应用程序,其中嵌入了webbroswercontrol。我试图将示例消息发布到一个开放的facebook群组。我无法用c#更改文本框的值。当我自动点击时,它会显示文本框值为空。解决办法是什么 1) 我建议您确保textbox为null,而不是textbox.InnerText。通常元素的内部文本为空,因此最好检查“占位符”属性并使用以下内容更新代码: // if (textBox.InnerText.Trim() == "Write something...") i
1) 我建议您确保textbox为null,而不是textbox.InnerText。通常元素的内部文本为空,因此最好检查“占位符”属性并使用以下内容更新代码:
// if (textBox.InnerText.Trim() == "Write something...")
if (textBox.GetAttribute("placeholder") == "Write something...")
2) 此代码不设置该值。它获取值并与“测试消息”进行比较
只需使用SetValue即可
textBox.SetAttribute("value", "Test message");
3) 确保在加载页面后执行所有操作
public SomeFormName()
{
...
webBrowser.DocumentCompleted += webBrowser_DocumentCompleted;
}
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs args)
{
// put your code here
}
4) 不确定FindControlByName是如何工作的,因此请检查一个简单的LINQ查询以确保找到textbox
var textbox = webBrowser.Document.All.OfType<HtmlElement>()
.Where(item => item.Name == "xhpc_message")
.FirstOrDefault()
;
var textbox=webBrowser.Document.All.OfType()
.Where(item=>item.Name==“xhpc_消息”)
.FirstOrDefault()
;
在对代码进行注释后,在单独的函数中完全触发文档完成事件后,使用下面的代码。webbrowser中的URL应该包含要发布文章的组页面
private void AfteDocumentLoads()
{
HtmlElementCollection textBox = webBrowser.Document.GetElementsByTagName("textarea").GetElementsByName("xhpc_message");
HtmlElementCollection button = webBrowser.Document.GetElementsByTagName("button");
foreach (HtmlElement element in textBox)
{
foreach (HtmlElement btnelement in button)
{
if (btnelement.InnerText == "Post")
{
element.Focus();
element.InnerText = txtPortalUserId.Text.ToString();
btnelement.InvokeMember("Click");
}
}
}
}
我也被卡住了,因为它没有更早发布,因为我使用WebBrowser类来获取当前的WebBrowser。结果是,文本作为“模糊”注释输入到组中。即使我在FB页面上手动点击,它也会说“这个状态更新似乎是空白的。请写一些东西或附加一个链接或照片来更新您的状态。”
我使用了页面的webbrowser&它工作了,因为它以正确的方式出现在页面上。LOC中也有一些变化注释文本框代码并尝试传递硬编码字符串值。同时,我将尝试找到解决方法…您可以使用
element.SetAttribute(“Value”,string)代码>我用一个按钮来调用函数,而不是'element.InnerText`@Chandana,如果你想的话,你可以稍后自动调用它。
public SomeFormName()
{
...
webBrowser.DocumentCompleted += webBrowser_DocumentCompleted;
}
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs args)
{
// put your code here
}
var textbox = webBrowser.Document.All.OfType<HtmlElement>()
.Where(item => item.Name == "xhpc_message")
.FirstOrDefault()
;
private void AfteDocumentLoads()
{
HtmlElementCollection textBox = webBrowser.Document.GetElementsByTagName("textarea").GetElementsByName("xhpc_message");
HtmlElementCollection button = webBrowser.Document.GetElementsByTagName("button");
foreach (HtmlElement element in textBox)
{
foreach (HtmlElement btnelement in button)
{
if (btnelement.InnerText == "Post")
{
element.Focus();
element.InnerText = txtPortalUserId.Text.ToString();
btnelement.InvokeMember("Click");
}
}
}
}