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