我正在尝试点击页面上的按钮,当我在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
答案 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