Selenium 2 не может найти идентификатор элемента, если я не иду прямо в файл .aspx - PullRequest
2 голосов
/ 15 июля 2010

Итак, я пытаюсь перейти на Selenium 2, но у меня, похоже, есть проблема, если я перейду к http://website.com, Selenium не может найти элементы моей формы aspx.Мне нужно, чтобы Selenium перешел непосредственно к http://website.com/form.aspx. Это не ужасно, потому что я могу убедиться, что формы работают, но в идеале я хотел бы, чтобы он завершил все с точки зрения пользователей.У кого-нибудь еще была такая проблема?

Ответы [ 2 ]

4 голосов
/ 16 июля 2010

Похоже, что на вашем сайте есть перенаправление с главной страницы по умолчанию на form.aspx. Я думаю, что WebDriver ловит завершение загрузки главной страницы, которая затем перенаправляет на форму, но WebDriver не ловит это.

Я думаю, что вы можете либо ввести задержку перед началом поиска элементов, либо использовать PageFactory с AjaxElementLocatorFactory, которая позволит вашему драйверу ждать, пока элементы управления действительно не появятся, но я не уверен, что это доступно для C #

1 голос
/ 23 июля 2010

У меня тоже была эта проблема, это связано с перенаправлением, а команда waitFor * не совсем хорошо работает с перенаправлениями.Он никогда не будет ждать 2 страницы (это то, что нам нужно здесь), но если вы поместите 2 ожидания подряд (что в теории является правильным решением), часто 2-я будет зависать.Похоже, что это какое-то состояние гонки, так как оно непредсказуемо, хотя 90% времени кажется, что оно зависает, хотя

Так что я просто вращался в цикле, пока не увидел какой-то сигнал на странице после перенаправлениячто я ожидал увидеть.Вы также можете получить сигнал, который вы ищете для фактического теста.Мое решение, короткий блок Perl, который, я уверен, вы можете перевести на C #:

$sel->open('/some/page/that/will/redirect/us');
$sel->wait_for_page_to_load("30000"); #wait for the redirect to hit
do {       
   $sel->pause(50); #now spin while we're in no-mans land

   #until you spot what you need:
   last if $sel->is_text_present('This is the Real Home Page'); 
} while( 1 );

#carry on.... redirect is completed and page is loaded

Приятным бонусом этого является то, что журнал истории команд подсчитывает миллисекунды при "Та же команда (99 мс): xyz ", как он вращается, давая вам знать, что все живо и здорово, в то время как перенаправление идет своим чередом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...