2016-11-25 7 views

ответ

2

Вы должны использовать обычную находку css для тега title и использовать getText() для получения заголовка.

CSS-код должен быть: «Название головы»

Ваше решение почти нормально, вы должны следить за возможным исключением, особенно с летальным исходом, которые могут остановить свой пакет, если встречается.

Например find() метод возвращает объект или null, если null возвращается, и вы используете getText() на него приведет к неустранимого исключения и ваш люкс остановится.

Немного улучшенный метод:

/** 
* @Given /^the page title should be "([^"]*)"$/ 
*/ 
public function thePageTitleShouldBe($expectedTitle) 
{ 
    $titleElement = $this->getSession()->getPage()->find('css', 'head title'); 
    if ($titleElement === null) { 
     throw new Exception('Page title element was not found!'); 
    } else { 
     $title = $titleElement->getText(); 
     if ($expectedTitle !== $title) { 
      throw new Exception("Incorrect title! Expected:$expectedTitle | Actual:$title "); 
     } 
    } 
} 

Улучшение:

  • обработано возможному летальному за исключением
  • бросить исключение, если элемент не найден
  • бросить исключения с деталями, если названия не совпадают

Обратите внимание, что вы также можете использовать другие методы, чтобы проверить заголовок как: stripos, strpos или просто сравнить строки, как я. Я предпочитаю простой сравнения, если мне нужен точный текст или метод strpos/stripos php, и я лично, избегаю регулярных исключений и связанных с ними методов, таких как preg_match, которые обычно немного медленнее.

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

0

Спасибо, Лауда. Да, это действительно сработало. Написала следующую функцию:

/** 
    * @Given /^the page title should be "([^"]*)"$/ 
    */ 
    public function thePageTitleShouldBe($arg1) 
    { 
     $actTitle = $this->getSession()->getPage()->find('css','head title')->getText(); 
     if (!preg_match($arg1, $actTitle)) { 
      throw new Exception ('Incorrect title'); 
     } 
    }