2016-11-25 3 views

答えて

2

titleタグには通常のfindを使用し、getText()を使用してタイトルを取得する必要があります。

CSSは次のようになります。「頭のタイトル」

あなたの解決策は、ほぼ大丈夫です、あなたは、可能な例外の発生した場合、あなたのスイートを停止することができ、特に致命的なものを見てする必要があります。 nullは、それが致命的な例外になりますし、あなたのスイートは停止します返され、あなたがそれにgetText()を使用している場合は

例えばfind()方法は、オブジェクトまたはnullを返します。

若干改善方法:

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

改善:タイトルが と一致しない場合、要素は詳細と

  • スロー例外を発見していない場合に可能致命的な例外
  • スロー例外を処理し

    他の方法を使ってタイトルを確認することもできます。striposstrposなどと比較するか、単純に私のように文字列を比較してください。私はPHPや私は個人的には、通常の例外やpreg_matchのような関連するメソッドを避けるために、私は正確なテキストやstrpos/striposメソッドを必要とする場合、私は単純な比較を好む。

    あなたが行うことができる主な改善点は、要素を待って例外を処理し、単純な検索ではなく要素の存在に基づいて判断する必要があるときに使用できる方法を見つけることですlike:if要素が存在する場合は、これを実行します。

  • 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'); 
         } 
        } 
    
    関連する問題