在Web浏览器控件中查询

时间:2013-07-08 19:27:56

标签: c# .net

我正在尝试自动化Web应用程序。我要做的是登录一个网站,选择一个下拉菜单并将一些Id插入到文本框中,然后单击一个按钮,最后阅读一些文本。

对于单个ID,一切都很好。现在我有一个包含100行的数据表。我想循环并更改texbox值,单击按钮并阅读新文本。

这可以通过网络浏览器控制实现吗?我明天会发布我的测试代码......

任何正确方向的方法都受到高度赞赏。提前感谢。

if (this.wbProject1.ReadyState == WebBrowserReadyState.Complete)
        {
            mFrameCount += 1;
            wbProject1.Document.Window.Frames[1].Document.GetElementsByTagName("select")[0].SetAttribute("Value", "1");
            HtmlWindow win = wbProject1.Document.Window;
            if (win.Frames.Count > mFrameCount && win.Frames.Count > 0) done = false;
            for (int rowCount = dtCertificateNo.Rows.Count - 1; rowCount >= 0; rowCount--)
            {
                int loopCount = 0;

                DataRow drow = dtCertificateNo.Rows[rowCount];
                wbProject1.Document.Window.Frames[1].Document.GetElementsByTagName("input")[1].SetAttribute("value", drow["CertificateNo"].ToString().Trim());
                wbProject1.Document.Window.Frames[1].Document.GetElementsByTagName("a")[4].InvokeMember("click");
                System.Threading.Thread.Sleep(2000);

                if (done)
                {
                    string[] str2 = wbProject1.Document.Window.Frames[1].Document.Body.InnerText.Replace("\r\n", "").Split(' ');
                    string[] str3 = wbProject1.Document.Window.Frames[1].Document.Body.InnerText.Replace("\r\n", "|").Split('|');

                    for (int i = 0; i < str2.Length - 1; i++)
                    {
                        if (str2[i] == "Status:")
                        {
                            if (str2[i + 1] == "Unperfected")
                            {
                                for (int j = 0; j < str3.Length - 1; j++)
                                {
                                    if (str3[j].Contains("Reason:"))
                                    {
                                        DataRow drowFirst = dtReasons.NewRow();
                                        drowFirst["CertificateNo"] = drow["ID"].ToString();
                                        drowFirst["Reason"] = str3[j];
                                        drowFirst["Comment"] = str3[j + 1];
                                        dtReasons.Rows.Add(drowFirst);

// Here document inner text does not refreshes and remains the same for all the id's (holds the last one).

                                    }

                                }

                            }
                        }
                    }

                    drow.Delete();
                    dtCertificateNo.AcceptChanges();
                }
            }

            if (done)
            {
                ExcelExport(dtReasons, "D:\\Test");
                this.Close();
            }
        }
        else
        {
            Application.DoEvents();
        }

0 个答案:

没有答案