使用“Inspect Element”中的id无法访问按钮

时间:2016-03-07 04:01:55

标签: javascript c# html webbrowser-control

我正在尝试点击页面上的按钮,当我在Chrome浏览器上选择检查选项时,我可以看到其ID。正如您所见,该按钮的ID为order by right(`seat`, 1), cast(`seat` as unsigned)

troop_confirm_go

但是,当我在同一页面上选择查看页面来源时,我无法在文本中看到该按钮ID。因此,我认为这就是我无法从代码中找到按钮以便点击它的原因。

这是我的C#代码,使用.Net Framework 4.5:

<input id="troop_confirm_go" style="margin-bottom: 5px" class="troop_confirm_go btn btn-attack" name="submit" type="submit" onload="this.disabled=false;" value="Send Attack">

如果我通过检查可以看到按钮ID,我可以点击它吗?我怎样才能做到这一点?

编辑:点击WebBrowser _wb; private void PageLoaded(object sender, WebBrowserDocumentCompletedEventArgs e) { if(!IamSureThisIsTheCorrectPage()) return; var attack = _wb.Document.GetElementById("troop_confirm_go"); // attack is null attack.InvokeMember("click"); // null reference error } 时,这是按钮的父对象。这可能包含我无法访问按钮的原因的信息。

Inspect

2 个答案:

答案 0 :(得分:1)

我之前遇到过一个问题,从你的代码示例来看,它还不清楚,但是如果你的按钮位于表单中的面板内,或者在另一个控件中,那么使用FindControl可能会很有用( )在按钮所在的父容器上。Here是FindControl()的MSDN页面。

另一种选择可能是为按钮的click事件添加JQuery代码。

这种JQuery方法应该与动态添加的DOM元素或静态DOM元素一起使用,所以无论你如何将该按钮添加到页面,这个函数应该选择它:

$(function(){
    $(document).on('click', '#troop_confirm_go', function(){
        $.ajax({
            url: '/Controller/MethodName/',
            data: null,
            type: 'POST',
            success: function (ifAnyReturnedData) {
                //Your success logic here
        }
    });
    }
};

答案 1 :(得分:0)

WebBrowser对象加载正确的DOM没有问题。这完全是我的错。我无法加载正确的网址。

感谢您的帮助monstertjie_za