javascript - 在winforms webbrowser控件中调用href点击事件JavaScript

标签 javascript c# winforms webbrowser-control

我正在尝试从我的应用程序自动登录一款在线浏览器游戏。但是,当我检查登录按钮时,我看到了这个 html 代码。

<div id="js_login_button">
                <a href="#" onclick="$('#login_submit_button').click()" class="login_button">
                    <span class="button_left"></span>
                    <span class="button_middle">Login</span>
                    <span class="button_right"></span>
                </a>
            </div>  

由于我无法访问按钮的 id,因此无法使用

webbrowser.Document.GetElementById("button_id").InvokeMember("click");

如何调用此类按钮?

编辑:对于那些想知道这是什么游戏的人来说: https://www.tribalwars.net/

<form action="index.php?action=login&amp;show_server_selection=1" method="post" id="login_form" onsubmit="return Index.login_submit();" data-tracked="true">
    <div>
        <label for="user">
            <strong>User name:</strong>
            <span>
                <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_form').submit()" data-tracked="true">
            </span>
        </label>
        <label for="password">
            <strong>Password:</strong>
            <span>
                <input name="clear" type="hidden" value="true" data-tracked="true">
                <input id="password" name="password" class="text" type="password" onkeydown="if((e=window.event||event) &amp;&amp; e.keyCode == 13 &amp;&amp; $('#user').val() &amp;&amp; $('#password').val()) $('#login_form').submit()" data-tracked="true">
            </span>
        </label>

        <input type="submit" id="login_submit_button" style="display: none" data-tracked="true">

        <label for="cookie" class="remember_me">
            <input id="cookie" type="checkbox" name="cookie" value="true" checked="checked" data-tracked="true">
                Remember me
        </label>

        <div id="login-buttons">
                            <a id="fb-login-button" class="social-login-button" href="https://ipp-facebook.innogames.de/?game=staemme&amp;market=en&amp;" title="Play with Facebook"></a>

            <div id="js_login_button">
                <a href="#" onclick="$('#login_submit_button').click()" class="login_button">
                    <span class="button_left"></span>
                    <span class="button_middle">Login</span>
                    <span class="button_right"></span>
                </a>
            </div>          
        </div>

        <br style="clear:both;">
    </div>
</form>

在此页面上,名为登录的按钮具有相同的属性。

编辑 2:这是显示我尝试(和失败)的源代码:

public Form1()
{
    InitializeComponent();
    browser.Navigate("https://www.tribalwars.net/"); // browser is defined in the form as a WebBrowser element
}

private void btnTest_Click(object sender, EventArgs e)
{

    //var debug = browser.Document.GetElementById("login_submit_button").InvokeMember("click"); // there is a runtime null referance error here

    var elements = browser.Document.GetElementsByTagName("Login");

    foreach (HtmlElement element in elements)
    {
        // The program does not enter here, there is no element !
        //element.InnerHTML to see if it's the one you want
        element.InvokeMember("click");

    }
}

最佳答案

假装点击“button_middle” span标签应该可以工作;我预计 click 事件将向上冒泡到其父级 a 标记,该标记具有提交表单的 onclick 事件。

var elements = browser.Document.GetElementsByTagName("span");

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.InnerHtml != null && element.InnerHtml.Contains("Login"))
    {
        element.InvokeMember("click");
    }
}

关于javascript - 在winforms webbrowser控件中调用href点击事件JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713772/

相关文章:

javascript - 提取并调用元素的 onclick HTML 属性中定义的 JavaScript 函数(使用 jQuery attr/prop)

javascript - 如何更改jQuery UI自动完成控件的建议框的大小和外观?

c# - 使用 IEnumerable<T> 过滤选择输出的 LINQ

c# - 如何将空图像添加到表格

javascript - 用 mysql 结果创建一个 foreach

javascript - 如何在 Firefox 中使用 javascript 正则表达式替换 href?

C# 转换和泛型

C#和Matlab读取视频帧rgb值的区别

c# - Windows 窗体中标签的自动换行

C# 窗体 : Accessing Outlook with Multiple Mailboxes