0

好吧,这个问题很简单。

我在以这种方式生成的类文件中有一个 webkit 浏览器:

public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();

现在我正在尝试自动登录网站。但输入字段未填写。

我正在使用此代码到达需要填写数据的位置:

public void loginthen()
{
    this.Controls.Add(globalVars.mainBrowser);
    globalVars.mainBrowser.DocumentCompleted += 
        new WebBrowserDocumentCompletedEventHandler(mainBrowser_DocumentCompleted);
    globalVars.mainBrowser.Navigate("http://www.somesite.com/");                
}

void mainBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var send = sender as WebKit.WebKitBrowser;
    if (send.Url == e.Url)
    {
        MessageBox.Show("Inloggen");
        globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
    }
}

显示MessageBox,我没有收到错误,但输入字段未填写。

输入字段的 HTML 是这样的:

<input id="user" name="user" class="text" type="text" value="" onkeydown="if((e=window.event||event) &amp;&amp; e.keyCode == 13 &amp;&amp; $('#user').val() &amp;&amp; $('#password').val()) $('#login_button').trigger('click');">

所以我的想法是......我用TextContent错了吗?

这(和触发按钮等)可以用javascript完成吗?

所以我用谷歌搜索它,但我唯一能找到的是如何从 javascript 调用 C# 函数或如何从 C# 调用 javascript 函数。但我不拥有这些网站,所以这行不通......

那么您对此有何看法?

4

1 回答 1

1

代替:

globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";

你应该使用:

globalVars.mainBrowser.Document.GetElementById("user").SetAttribute("value", "User Name");

您可以使用该TextContent属性来设置 HTML 标记的内容,例如<p />,<span /><div />.

globalVars.mainBrowser.Document.GetElementById("myDiv").TextContent = "some div content";
于 2013-01-11T01:26:53.160 回答