WatiN дождитесь завершения выполнения java-скрипта, прежде чем щелкнуть ссылку (IE)

у меня есть эта страница, отображающая оператор каждые 2 секунды (с использованием javascript), в конце есть ссылка, по которой пользователь может щелкнуть.

с IE он щелкнет ссылку до того, как сгенерированный javascript оператор будет завершен. когда я использую Link.Click()

(с Firefox он выдаст исключение, что меня устраивает)

есть ли способ дождаться завершения выполнения javascript до того, как ссылка будет нажата (IE)?

ТИА

ОТРЕДАКТИРОВАНО // код, довольно простой поиск ссылки, которая начинается с // «Продолжить поиск» в браузере, затем нажмите

if (ln.Text.StartsWith("Continue searching", StringComparison.CurrentCultureIgnoreCase))
{
  ln.Click();
}

Спасибо


person Sendoh    schedule 24.05.2010    source источник
comment
Не могли бы вы уточнить? Что такое Link.Click()? И вам, вероятно, следует добавить код к вопросу.   -  person Sean Kinsey    schedule 25.05.2010
comment
Вы также должны опубликовать свой код.   -  person    schedule 25.05.2010
comment
Это не проблема javascript, похоже, что С# используется на стороне сервера, а Link.Click — это событие на стороне сервера, а не событие на стороне клиента.   -  person Sean Kinsey    schedule 25.05.2010
comment
@Sean Kinsey: Этот вопрос помечен неправильно, но у меня нет представителя, чтобы изменить тег. Это должно быть помечено WatiN в первую очередь. Может быть, даже C#. WatiN — это C# библиотека для автоматизации браузера (можно погуглить). И именно поэтому я использовал Thread.Sleep в своем ответе.   -  person prostynick    schedule 25.05.2010
comment
@Sean Kinsey: Ну, вы сами удалили соответствующий тег :/   -  person prostynick    schedule 25.05.2010


Ответы (3)


Если я правильно понимаю, ссылка уже загружена, но javascript прикрепит к ней какие-то события чуть позже, верно? Не могли бы вы немного подождать, используя Thread.Sleep(500)? Или, может быть, вы можете узнать, что происходит после выполнения кода javascript. Вам нужно будет выяснить, как работает js на этой странице, но, возможно, js добавляет какой-то класс или что-то похожее на эту ссылку, поэтому вы можете подождать в активном цикле с небольшим количеством Thread.Sleep, пока js не выполнит свою работу.

person prostynick    schedule 25.05.2010
comment
спасибо, это то, что я сейчас делаю, просто интересно, есть ли более аккуратный способ сделать это. (кстати, к ссылке не привязано событие, просто хочу щелкнуть ссылку после того, как javascript перестал выполняться, а не когда он все еще выполняется) спасибо - person Sendoh; 25.05.2010
comment
Да, но, возможно, сама страница прикрепляет какое-то событие или модифицирует DOM страницы, поэтому вы можете просто подождать, пока это произойдет. Это именно то, что делает WatiN, когда он ожидает «завершения» или «до чего-то» — WatiN активно ожидает в цикле while. См. класс TryFuncUntilTimeOut и метод Try. Вы можете использовать этот класс в своих целях. - person prostynick; 25.05.2010
comment
@prostynick: в javascript нет такой вещи, как Thread.Sleep - person Sean Kinsey; 25.05.2010
comment
Есть ли способ получить доступ к глобальной переменной javascript из Watin? Спасибо - person Sendoh; 25.05.2010
comment
Наверное. Попробуйте Eval на своем IE объекте (или кадре). К сожалению, я никогда не пробовал это раньше и не могу этого подтвердить. - person prostynick; 26.05.2010

верните false из функции «Link.Click», тогда поведение по умолчанию будет проигнорировано.

person Dani Cricco    schedule 24.05.2010
comment
спасибо за ответ, к сожалению, ссылка. Нажмите успешно, если запустить с использованием IE (Firefox выдаст исключение), в то время как javascript все еще выполняется, а страница все еще прокручивается, ссылка еще не показана. - person Sendoh; 25.05.2010

Вы пытались использовать ie.WaitUntilContainsText("my text"); ?

person Shady M. Najib    schedule 05.08.2010