string entry = Titleentry.Text;
webBrowser1.Navigate("http://www.bookdepository.com/search/advanced");
//HtmlElementCollection bookCollection;
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
HtmlElementCollection bookCollection = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement curElement in bookCollection)
{
if ((curElement.GetAttribute("id").ToString() == "searchTitle"))
{
curElement.SetAttribute("value", entry);
}
}
HtmlElementCollection filterCollection = webBrowser1.Document.GetElementById("filterSortBy").GetElementsByTagName("option");
List<HtmlElement> filterList = new List<HtmlElement>();
foreach (HtmlElement filterItem in filterCollection) { filterList.Add(filterItem); }
HtmlElement filterElement =
(HtmlElement)filterList.Where(filterOption => filterOption.GetAttribute("value").Equals("price_low_high", StringComparison.InvariantCultureIgnoreCase)).SingleOrDefault();
if (filterElement.GetAttribute("value").Equals("price_low_high"))
{
filterElement.SetAttribute("Selected", "price_low_high");
filterElement.InvokeMember("click");
}
bookCollection = webBrowser1.Document.GetElementsByTagName("button");
foreach (HtmlElement curElement in bookCollection)
{
if (curElement.GetAttribute("id").Equals("searchSubmit"))
{
curElement.InvokeMember("click");
}
}
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
MessageBox.Show("Loaded");
System.Timers.Timer myTimer = new System.Timers.Timer(5000);
myTimer.Enabled = true;
myTimer.Start();
myTimer.Stop();
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) //from here on the code doesnt work.
{
HtmlElementCollection avCollection = webBrowser1.Document.GetElementById("filterAvailability").GetElementsByTagName("option");
List<HtmlElement> avList = new List<HtmlElement>();
foreach(HtmlElement avItem in avCollection)
{
avList.Add(avItem);
}
HtmlElement avElement =
(HtmlElement)avList.Where(avOption => avOption.GetAttribute("value").Equals("1")).SingleOrDefault();
if (avElement.GetAttribute("value").Equals("1"))
{
avElement.SetAttribute("Selected", "1");
avElement.InvokeMember("click");
}
bookCollection = webBrowser1.Document.GetElementsByTagName("button");
foreach (HtmlElement curElement in bookCollection)
{
if (curElement.GetAttribute("id").Equals("searchSubmit"))
{
curElement.InvokeMember("click");
}
}
}
ここにコード全体があります。反応が速すぎるため、タイマーを考えて遅延を設定しようとしましたが、タイマーも機能していないため、何が問題なのかわかりません。
機能しないコードは、3 つのカウントで avList を作成し、値 1 を選択すると想定されています。値 1 は、Web サイトの在庫状況を表します。
デバッグせずに実行すると、if 条件で記述されたコードを完全に無視するようです。
ありがとう