2016-11-25 7 views

답변

2

제목 태그에 대해 CSS 찾기를 사용하고 getText()를 사용하여 제목을 가져와야합니다.

는 CSS가 있어야한다 : "머리 제목"

귀하의 솔루션은 거의 괜찮습니다, 당신은 가능한 예외가 발생하는 경우 스위트 룸을 중지 할 수 있습니다, 특히 치명적인 것들을 볼 필요가있다. null이 반환되는 경우

예를 들어 find() 방법은 개체 또는 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 또는 단순히 내가했던 것처럼 문자열을 비교할 수 있습니다. PHP 나 strpos/stripos 메서드가 필요하고 개인적으로는 간단한 예외를 피하고 preg_match와 같은 관련 메서드를 사용하지 않는 것이 좋습니다. 보통은 약간 느립니다.

    당신이 할 수있는 중요한 개선점 중 하나는 요소를 대기하고 예외를 처리하는 방법을 가지고 간단한 검색 대신에 요소의 존재 여부에 따라 결정해야 할 때 사용할 수있는 방법을 찾는 것입니다 like : if 요소가 존재하면 else do .. else

  • 0

    감사합니다. Lauda. 네, 실제로 성공했습니다. 아래 기능을 작성했습니다 :

    /** 
        * @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'); 
         } 
        }