使用C#代码发布到Facebook群组

时间:2014-06-05 07:17:52

标签: c# facebook post

我正在使用嵌入webbroswercontrol的Windows应用程序。我试图将样本消息发布到一个开放的Facebook组。我无法使用c#更改文本框的值。当我自动点击它时,表示文本框值为空。会有什么问题?


<input type="hidden" autocomplete="off" class="mentionsHidden" 
                                 name="xhpc_message" value="lklklkl">

HtmlElement textBox = this.FindControlByName("xhpc_message", 
                                              this.webBrowser.Document.All);

//Click Code
var elements = webBrowser.Document.GetElementsByTagName("button");
foreach (HtmlElement element in elements)
{
    // If there's more than one button, you can check the
    //element.InnerHTML to see if it's the one you want


    if (element.InnerText.Contains("Post"))
    {
        if (textBox.InnerText.Trim() == "Write something...")
        {
            textBox.Focus();
            textBox.GetAttribute("value").Equals("Test Message");
            IHTMLElement nativeElement = element.DomElement as IHTMLElement;
            nativeElement.click();
            break;
        }

    }
}

2 个答案:

答案 0 :(得分:2)

1)我建议您确保该文本框为null,而不是textBox.InnerText。通常元素的内部文本为null,因此最好检查“占位符”属性并使用以下代码更新代码:

// if (textBox.InnerText.Trim() == "Write something...")
if (textBox.GetAttribute("placeholder") == "Write something...")

2)此代码未设置该值。它获取值并与“测试消息”进行比较。

textBox.GetAttribute("value").Equals("Test Message");

只需使用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查询以确保找到文本框。

var textbox = webBrowser.Document.All.OfType<HtmlElement>()
    .Where(item => item.Name == "xhpc_message")
    .FirstOrDefault()
;

答案 1 :(得分:2)

在对代码进行注释后,在单独的函数中完全触发Document complete事件后,使用下面的代码.Webbrowser中的URL应该保持发布帖子的Group Page。

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&amp;它起作用'它在页面上以适当的方式出现。 LOC中也有一些变化