0

Web アプリケーションを自動化しようとしています。私がやろうとしているのは、Webサイトにログインし、ドロップダウンを選択してIDをテキストボックスに挿入し、ボタンをクリックして最後にテキストを読むことです。

これが 1 つの Id に対して行われれば、すべて問題ありません。これで、たとえば 100 行を含むデータテーブルができました。texbox の値をループして変更し、ボタンをクリックして新しいテキストを読みたいです。

これは Web ブラウザ コントロールで実現できますか? テストコードは明日投稿します...

正しい方向へのアプローチは高く評価されます。よろしくお願いします。

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();
        }
4

0 に答える 0