2013-05-11 50 views
4

我想測試一個網站,它有一個動態菜單結構。我想遍歷所有菜單項並在每個頁面上運行同一系列的測試。我們正在談論超過100頁改變reguraly的頁面。每個元素與behat或codeception

我想用behat或codeception來做到這一點。

有沒有人有關於如何做到這一點的想法?

回答

0

當使用貝哈特與水貂,你可以抓住用的findAll您的菜單項(),然後遍歷它:

/** 
* @When /^I run my test series for all menu items$/ 
*/ 
public function iRunMyTestSeriesForAllMenuItems() { 

    $result = TRUE; 
    $this->getSession()->visit('http://www.example.com/'); 
    $links = $this->getSession()->getPage()->findAll('css', '#menu ul li a'); 
    foreach ($links as $link) { 
     $url = $link->getAttribute('href'); 
     if (FALSE === $this->yourTestHere($url)) { 
      $result = FALSE; 
     } 
    } 

    return $result; 
} 
+2

而是返回true/false時最好能夠簡單地拋出一個異常。 Behat會將其視爲一步失敗。 – 2013-06-05 12:27:55

1

我有,我想訪問特定網站的所有網頁一個類似用途的情況下,確保沒有任何死鏈接的地圖。我有辦法動態生成的步驟,然後返回並通過貝哈特處理的陣列。我不得不添加一個人工步驟「我打印出頁面」,以確保我可以在控制檯上看到目前正在測試的頁面。

/** 
* @Then /^I should access all pages of site map "([^"]*)"$/ 
*/ 
public function iShouldAccessAllPagesOfSiteMap($selector) { 

    $page = $this->getSession()->getPage(); 
    $locator = sprintf('#%s a', $selector); 
    $elements = $page->findAll('css', $locator); 

    $steps = array(); 
    foreach ($elements as $element) { 
     /** @var \Behat\Mink\Element\NodeElement $element */ 
     $steps[] = new Behat\Behat\Context\Step\When(sprintf('I print out page "%s"', $element->getAttribute('href'))); 
     $steps[] = new Behat\Behat\Context\Step\When(sprintf('I go to "%s"', $element->getAttribute('href'))); 
     $steps[] = new Behat\Behat\Context\Step\Then('the response status code should be 200'); 
    } 
    return $steps; 
} 

/** 
* @When /^I print out page "([^"]*)"$/ 
*/ 
public function iPrintOutThePage($page) { 
    $string = sprintf('Visiting page ' . $page); 
    echo "\033[36m -> " . strtr($string, array("\n" => "\n| ")) . "\033[0m\n"; 
} 

然後我的情況如下所示:

Scenario: my website has no "dead" pages 
Given I am on "/examples/site-map/" 
Then I should access all pages of site map "c118" 

整個要點是這裏https://gist.github.com/fudriot/6028678

+0

簡直太棒了!!!!! Tahnks – realtebo 2013-09-02 15:38:59