2015-04-15 5 views
3

Я пытаюсь запустить записанный тестовый пример в Selenium IDE. Проблема в том, что, когда я пытаюсь выполнить весь тестовый пример, Selenium не позволяет найти элемент на странице. Проблема в том, что я могу выполнить одиночные шаги тестового примера. Я думал, что Selenium пытается найти элемент перед загрузкой новой страницы, поэтому я использовал команды clickAndWait, pause и waitForElementPresent - ничего не работает, Selenium останавливает тестовый пример.Selenium IDE не может найти элемент

отладки журнала

• [info] Executing: |`clickAndWait` | css=i.fa.fa-arrow-left | | 
• [debug] Command found, going to execute clickAndWait 
• [debug] modifyWindow seleniumMarker1429084950752:selenium1429084951105 
• [debug] _getFrameElement: frameElement=null 
• [debug] modifySeparateTestWindowToDetectPageLoads: already polling this window: selenium1429084951105 
• [debug] getCurrentWindow newPageLoaded = false 
• [error] Element css=i.fa.fa-arrow-left not found 
• [debug] commandError 
• [debug] testComplete: failed=true 
• [info] Test case failed 

Я буду очень признателен за любую помощь и предложения.

+0

Нужна более подробная информация здесь. Видеть больше скрипта поможет. Что произойдет до того, как вы выполните clickAndWait на css = i.fa.fa-arrow-left? Вы проверили, существует ли этот элемент до щелчкаAndWait. Похоже, это то, что здесь подразумевается. – DMart

+0

Также есть несколько окон, участвующих в этом тесте? – DMart

ответ

1

Есть определенные случаи, когда «ClickAndWait» не является надежным и не будет ждать завершения команды перед переходом к следующей команде. В таких случаях альтернативой является использование «Click» вместо этого и последующая работа с «waitForPageToLoad».

Пример ...

ORIGINAL

<tr> 
    <td>clickAndWait</td> 
    <td>//input[@type='submit']</td> 
    <td></td> 
</tr> 

NEW

<tr> 
    <td>click</td> 
    <td>//input[@type='submit']</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPageToLoad</td> 
    <td>10000</td> 
    <td></td> 
</tr> 

Если это не помогает, пожалуйста, напишите ваш исходный код, и я буду видеть, если есть что-то еще, что я может предложить.

+0

Это избыточно. ClickAndWait делает это. Однако AndWait может быть запущен на DOM, который может не иметь всех загруженных элементов, если есть javascript и/или ajax. – DMart

+1

Hi @DMart. Я видел, что AndWait также не работает в некоторых других ситуациях - особенно в тех случаях, когда доменное имя было настроено для перехода на IP-адрес вместо привязки к IP-адресу. В этой ситуации на странице не было JavaScript или AJAX, и мой сценарий не ожидал. Однако он успешно завершил работу Подождите, когда я разделил операцию на Click и WaitForPageToLoad. В этой конкретной ситуации это не было избыточным. –

+0

Это определяется документом ['readyState'], в частности !! document ['readyState']. https://github.com/SeleniumHQ/selenium/blob/6b4e6de722fcccd18619951543143999e9a30657/java/client/src/com/thoughtworks/selenium/webdriven/commands/WaitForPageToLoad.java Подробнее о readystate: Http: //www.w3schools. ком/jsref/prop_doc_readystate.asp – DMart

0

Я нашел большой успех в этой проблеме (элементы еще не присутствуют), используя комбинацию waitForElementPresent, verifyElementPresent и установку плагина Implicit Wait для IDE. (https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-implicit-wait/). Теперь я почти полностью удалил все команды «пауза» из моих тестов.

Klendathu

Смежные вопросы