2010-07-15 1 views
2

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

ответ

4

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

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

1

У меня тоже была эта проблема, это связано с перенаправлением и что команда waitFor * не очень хорошо работает с переадресацией. Он никогда не доживет до 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 

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