请教高手怎么自动点击网页中的按钮控件?

时间:2020-12-13 06:03:19
我做这个软件是在大学选课用的,比如网页:
http://jw.dhu.edu.cn/dhu/student/selectcourse/selectcourse2.jsp?courseNo=140305&courseId=150211&courseName=C语言程序设计
这个网址要登入后才能看到内容,先不管登入的过程,网页的源码如下:










<html>
<head>
    <title>学生选课</title>
    <style type="text/css">
        td {
            text-align: center
        }

        caption {
            font-size: 9pt
        }
    </style>
</head>
<link rel="stylesheet" href="../../admin/pub/page.css">

<body LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>

<div align="center"><img src="images/xk.gif" alt=""/></div><br>
<br>
    <div align="center"><b>确认所选课程及班次</b></div>
    <form action="../../servlet/com.collegesoft.eduadmin.tables.selectcourse.SelectCourseController"
        method="post" >

        <input type="hidden" name="doWhat" value="selectcourse">
        <input type="hidden" name="courseId" value="150211">
        <input type="hidden" name="courseNo" value="140305">
        <input type="hidden" name="courseName" value="C语言程序设计">
        <input type="hidden" name="studentId" value="100730420">
        <input type="hidden" name="majorId" value="110731">
        <input type="hidden" name="enterYear" value="2010a">
        <input type="hidden" name="yearTerm" value="20112012a">
        <input type="hidden" name="teacherId" value="99130002  ">
        <input type="hidden" name="selectCourseStatus" value="2">
    <table border="1" cellpadding="0" cellspacing="0"
        bordercolordark="white" width="600" id="AutoNumber2" bordercolorlight="bl ack"align="center">
        <caption align="left">
        <img src="../images/right_arrow.gif" alt="">点击“确认”按钮确定选择该课程,点击“重选”按钮重新选择班次</caption>
        <tr bgcolor="aliceblue"><td>选课序号</td><td>课程编号</td><td>课程名称</td><td>最大录取人数</td><td>已选人数</td><td>已录取人数</td>
            <td>是否选教材</td>
            </tr>
        <tr><td>140305</td>
            <td>150211</td>
            <td>C语言程序设计</td>
    <td>140</td>
            <td>45</td>
            <td>39</td>
            <td><input type="checkbox" name="needMaterial" value="1" style="border:0px;"></td>

        </tr>
    </table>
    <div align="center">
<input type="submit" onclick="this.value='正在操作请等待...';this.disabled=true;this.form.submit();" value="确认">


        <input type="button" value="重选" onclick="history.go(-1);"><br>
</div>
    </form>
<div style="color:red;">
    注: 请学生在选每一门课程的同时,慎重选择是否需要教材,教材科将根据学生的意向统计预定教材的数量。开学购书时,教材科将优先考虑选择需要教材的同学用书,有多余的再考虑未预定教材的同学。
</div>
    <br><tr><br><br><br><tr><br><br><br><br><br><br><br><tr><br><br>
    <script language="JavaScript" src="../../bottom.js" type="text/javascript"></script>
</body>
</html>



其中这部分可能是按钮的控件:<form action="../../servlet/com.collegesoft.eduadmin.tables.selectcourse.SelectCourseController"
        method="post" >

页面截图: 请教高手怎么自动点击网页中的按钮控件?

那个按键不是一般的连接,是一个像vb程序一样的按钮,看不到属性,更不用说连接的方向。
请问高手有办法可以自动点击吗?
可以的话选课就太爽了、、、、

7 个解决方案

#1


我试过:
http://jw.dhu.edu.cn/dhu/servlet/com.collegesoft.eduadmin.tables.selectcourse.SelectCourseController
显示错误操作

#2


木有人回答啊~~~求高手额~~

#3


额,想想我以前也做过自动刷课的,都是被学校蛋疼的选课系统给逼的。
窗体中添加一个WebBrowser控件,设置url,转到你需要的网址,再添加一个按钮,按钮click事件中添加以下代码
Dim webDoc As HtmlDocument
        Dim webEc As HtmlElementCollection
        webDoc = WebBrowser1.Document
        webEc = webDoc.GetElementsByTagName("input")
        Dim i As Integer = 0
        With webEc
            For i = 0 To webEc.Count - 1
                If .Item(i).GetAttribute("value") = "确认" Then '如果是确认按钮
                    .Item(i).RaiseEvent("OnClick") '引起单击事件
                End If
            Next
        End With

单击按钮实现自动点击确认

#4


   这是一个自动登陆的,希望能对你有帮助
private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://mail.163.com/"); //打开目标URL
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            ////webBrowser完成页面加载:
            if (webBrowser1.Url.ToString() == "http://mail.163.com/") //submit后还会加载一次,而所加载的页面“注销”按钮的name也是submit,所以这要判断下
            {
                HtmlDocument doc = webBrowser1.Document; //获取document对象
                foreach (HtmlElement em in doc.All) //轮循
                {
                    string str = em.Name;

                    if ((str == "username") || (str == "password")) //减少处理|| (str == "submit")
                    {
                        switch (str)
                        {
                            case "username": em.SetAttribute("value", "dxd0128@163.com"); break; //赋用户名
                            case "password": em.SetAttribute("value", "01122228"); break; //赋密码
                            default: break;
                        }
                    }
                }
                HtmlElementCollection hemc = webBrowser1.Document.Body.GetElementsByTagName("button");
                foreach (HtmlElement he in hemc)
                {
                    if (he.TabIndex == 6)
                    {
                        he.InvokeMember("click"); //触发submit事件
                        break;
                    }
                }
                
                //doc.Forms["login163"].InvokeMember("submit");

            }

        }

#5


   With webEc
            For i = 0 To webEc.Count - 1
                If .Item(i).GetAttribute("value") = "确认" Then '如果是确认按钮
                    .Item(i).RaiseEvent("OnClick") '引起单击事件
                End If
            Next


你可以找确认按钮就可以了 

#6


其实最早我也是用这样的方法登录网站,最后发现还是发包来的比较爽~
不过最近也遇到了点问题

#7


其实后来我自己研究出来啦~~~谢谢大家!!

#1


我试过:
http://jw.dhu.edu.cn/dhu/servlet/com.collegesoft.eduadmin.tables.selectcourse.SelectCourseController
显示错误操作

#2


木有人回答啊~~~求高手额~~

#3


额,想想我以前也做过自动刷课的,都是被学校蛋疼的选课系统给逼的。
窗体中添加一个WebBrowser控件,设置url,转到你需要的网址,再添加一个按钮,按钮click事件中添加以下代码
Dim webDoc As HtmlDocument
        Dim webEc As HtmlElementCollection
        webDoc = WebBrowser1.Document
        webEc = webDoc.GetElementsByTagName("input")
        Dim i As Integer = 0
        With webEc
            For i = 0 To webEc.Count - 1
                If .Item(i).GetAttribute("value") = "确认" Then '如果是确认按钮
                    .Item(i).RaiseEvent("OnClick") '引起单击事件
                End If
            Next
        End With

单击按钮实现自动点击确认

#4


   这是一个自动登陆的,希望能对你有帮助
private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://mail.163.com/"); //打开目标URL
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            ////webBrowser完成页面加载:
            if (webBrowser1.Url.ToString() == "http://mail.163.com/") //submit后还会加载一次,而所加载的页面“注销”按钮的name也是submit,所以这要判断下
            {
                HtmlDocument doc = webBrowser1.Document; //获取document对象
                foreach (HtmlElement em in doc.All) //轮循
                {
                    string str = em.Name;

                    if ((str == "username") || (str == "password")) //减少处理|| (str == "submit")
                    {
                        switch (str)
                        {
                            case "username": em.SetAttribute("value", "dxd0128@163.com"); break; //赋用户名
                            case "password": em.SetAttribute("value", "01122228"); break; //赋密码
                            default: break;
                        }
                    }
                }
                HtmlElementCollection hemc = webBrowser1.Document.Body.GetElementsByTagName("button");
                foreach (HtmlElement he in hemc)
                {
                    if (he.TabIndex == 6)
                    {
                        he.InvokeMember("click"); //触发submit事件
                        break;
                    }
                }
                
                //doc.Forms["login163"].InvokeMember("submit");

            }

        }

#5


   With webEc
            For i = 0 To webEc.Count - 1
                If .Item(i).GetAttribute("value") = "确认" Then '如果是确认按钮
                    .Item(i).RaiseEvent("OnClick") '引起单击事件
                End If
            Next


你可以找确认按钮就可以了 

#6


其实最早我也是用这样的方法登录网站,最后发现还是发包来的比较爽~
不过最近也遇到了点问题

#7


其实后来我自己研究出来啦~~~谢谢大家!!