0
  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 条件で記述されたコードを完全に無視するようです。

ありがとう

4

1 に答える 1