2014-11-12 3 views
0

У меня есть код, который использует Watin для ввода деталей поиска на веб-страницу, а затем нажмите кнопку «Поиск». Однако результаты поиска никогда не обновляются в DOM, поэтому новые элементы никогда не будут найдены. IE показывает верные данные, но html все еще находится на предыдущей странице поиска.Watin - IE DOM не обновляется после javascript

Почему это не работает, даже если я вручную дождитесь загрузки 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, чтобы проверить, не сохранился ли предыдущий элемент страницы, а также вручную спящий для ожидания страницы. Также нет кадров.

ответ

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. Вам нужно подождать, пока страница закончит загрузку, вы делаете что-то подобное с изображением, которое было показано WHILE, когда страница искала, но это не означает, что страница закончила загрузку результата. Я заменяю ваш код .WaitForComplete, а также при поиске DIV я не мог понять, что именно вы искали, поэтому я просто предположил, что вы ищете DIV, который имеет верхнюю панель id.

Надеюсь, это поможет.