我正在尝试自动化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();
}