2016-05-16 10 views
0

После добавления ввода и нажатия кнопки на целевой странице запускается сценарий JS, в результате которого (среди прочего) будет отображаться текст, отображаемый на странице ,

Линия «$ I-> see» - это самая последняя часть более длительного теста, которая до этого момента прошла успешно.

  • трижды проверенные именованные, синтаксические или орфографические ошибки;
  • попытался использовать CSS и XPath для текста;
  • попытался использовать локатор (но неудачно провалился из-за того, что не знал точно, как настроить его с помощью Webdriver);

Ошибки я получаю в терминале:

элемент расположен либо по имени, CSS или XPath элемента с не был найден .

Веб-страница пункта часть:

<div class="doc-remote-add" style="background-color: rgb(250, 255, 189); border-color: rgb(247, 218, 56);"> 
    <b>Important Delivery Info</b> 
    <br/> 
    The text I am searching for with codeception is here (no, there is no <p>). 
</div> 

Если ничего другого, может кто-нибудь написать приличный план конфигурации локатора? use \Codeception\Util\Locator; с официальной страницы на самом деле не разрезает его.

ответ

0

Спасибо, Сергей, но я был в состоянии найти гораздо более простое решение.

Действительно, основная проблема заключалась в том, что тест сразу искал текст. Самый простой и элегантный способ решить эту проблему - поставить $ I-> wait(); перед командой см, так что он приходит как этот

/* ... 
rest of test 
... */ 
$I->wait(3); 
$I->see('text i wanna see'); 
0

Вы можете попробовать повторно элемент из DOM на исключение:

try { 
     $I->seeElement($selector); 
    } catch (\Facebook\WebDriver\Exception\StaleElementReferenceException $e) { 
     $selector = <reselect_element_from_DOM>; 
     $I->seeElement($selector); 
    } 
0

Вы можете использовать этот метод в данном случае:

$I->waitForElement($element, $timeout = null); 

метод ожидает, пока на странице не появится элемент.