2014-10-09 3 views
2

Behat/Selenium 자동화 테스트 스크립트를 작성 중입니다. 난 단지 지정된 DIV 태그 내에 존재 나 내용 (텍스트)을 확인 할 수 있습니다 내 FeatureContext.php 파일에서 함수를 만들려면Behat/Selenium으로 특정 DIV의 컨텐츠 찾기

Given I am on "/" 
Then I should see <CONTENT> in <SPECIFIC DIV> 

: 나는라는 문장을 만들려고합니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

+0

정규식을 사용해야합니까? – sjagr

답변

2

올바른 방향으로 지적하고 싶다면 Behat 이데올로기와 모순되는 일을 피해야합니다. 시나리오는 사용자가 수행하는 작업과 코드를 살펴 보는 개발자가 아닌 페이지를 보는 사용자로 결과를 확인하는 데 사용하는 어설 션을 설명합니다. 마지막 단계의 논리는 당신 뒤에 있습니다. 초기 질문에 대한 답을 원하는 경우에

Given I am on the homepage 
Then the page title should read "hello world" 
And the user list should contain "john doe" 
And the dialogue title should be "foo bar" 

는, 다음과 같은 그것을 할 수 있습니다 :

/** 
* @Then /^(?:|I)should see "(?P<text>.+)" in the "(?P<selector>\w+)" element$/ 
*/ 
public function assertElementText($text, $selector) { 
    $page = $this->getSession()->getPage(); 
    $element = $page->findAll('css', $selector); 

    foreach($this->getSession()->getPage()->findAll() as $element) { 
     if (strpos(strtolower($text), strtolower($element->getText()) !== false) { 
      return; 
     } 
    } 

    throw Exception("Text '{$text}' is not found in the '{$selector}' element."); 
} 

을 그리고 다음과 같이 사용 즉, 당신의 단계는 더 같이 읽어야합니다 :

Then I should see "hello world" in the "div#title" element 
Then I should see "john doe" in the "ul#users > li" element 
+0

감사합니다. Ian. 나는 그 대답으로 연기된다는 것을 안다. 그러나 당신의 솔루션은 다시 한 번 일하면서 직장에서 시험 할 때 필요한 곳으로 일하게되었습니다. 다시 한번 감사드립니다. 무언가는 이것이 우리가 대응하는 마지막 시간이 아니라는 것을 나에게 말한다, LOL. – user3385054

+0

당신은 환영합니다 :) –