Watin-IE DOM在javascript之后没有更新

时间:2014-11-12 19:36:44

标签: javascript c# dom watin

我有一些代码使用Watin将搜索详细信息输入网页,然后单击“搜索”按钮。但是,搜索结果似乎永远不会在DOM中更新,因此永远不会找到新元素。 IE显示返回的正确数据,但html仍然来自上一个搜索页面。

即使我手动等待javascript加载,为什么这不起作用?

using (var browser = new IE("http://www.abebooks.co.uk/servlet/SearchEntry"))
{
    browser.TextField(Find.ById("an2")).Value = "joyce";
    browser.Image(Find.ById("findBook-advancedSearch")).Click();

    //Try looping until element disappears
    while (browser.Image(Find.ById("findBook-advancedSearch")).Exists)
    {
        Thread.Sleep(200);
    }
    //Never gets past here element still not found after sleep

    //Try manually waiting for data to load
    Thread.Sleep(10000);

    //Correct data is in IE bit DOM is not updated???
    string myHtml = browser.Body.Parent.OuterHtml;

    browser.Div(Find.ById("abe-content")).Div(Find.ById("main")).Div(Find.ById("topbar")).WaitUntilExists(10);
}

我尝试过While循环来检查前一页面元素是否不再存在,并且还手动睡眠以等待页面。似乎没有框架。

1 个答案:

答案 0 :(得分:0)

不确定你在这里想做什么。此代码在网站上正常运行:

        using (var browser = new IE("http://www.abebooks.co.uk/servlet/SearchEntry"))
        {
            browser.TextField(Find.ById("an2")).Value = "joyce";
            browser.Image(Find.ById("findBook-advancedSearch")).Click();
            browser.WaitForComplete();
            Div dd = browser.Div(Find.ById("topbar"));
            MessageBox.Show(dd.InnerHtml);
        }

但最重要的是你需要了解Watin的工作原理。你需要等到一个页面完成加载,你正在做类似的事情,当页面搜索时显示的图像,但这并不意味着页面完成加载结果。我用.WaitForComplete替换你的代码,并且当搜索DIV时我无法理解你正在寻找什么,所以我只是假设你正在寻找具有id topbar的DIV。

希望这有帮助。