2014-10-07 3 views
1

Behat/Selenium을 사용하여 웹 사이트를 테스트하기위한 시나리오가 있습니다. 웹 사이트의 양식 요소는 고유 한 "데이터 이름"속성을 사용합니다. Behat은 그 속성을 인식하지 못합니다. 어떤 사람이 내 FeatureContext.php에 넣을 수있는 커스텀 스텝 정의를 가지고 있는데 그것은 Behat/Selenium에서 "data-name"html 속성을 사용할 수있게 해 줄 것입니까?Behat/Selenium을 사용하여 데이터 이름 속성으로 양식 옵션 선택

<select name="select" data-name="state"> 
     <option value="AL">AL</option> 
     ... 
     <option value="WY">WY</option> 
</select> 

Behat 오류 :

When I select "MD" from "state" FeatureContext::selectOption() Form field with id|name|label|value "state" not found.

+0

있는 수도 수 중 하나를 당신의'behat.yml'에 해당 컨텍스트를 포함하지 않았기 때문에 당신은 당신의 (밍크) 컨텍스트에 아래 코드를 삽입하거나하지 않았기 때문에 파일이고로드되지 않았습니다. 둘 다 거의 똑같은 ... –

답변

2

다음은 When I select "MD" in the "state" select와 함께 작동합니다.

/** 
* @When /^(?:|I)select "(?P<option>\w+)" in the "(?P<name>\w+)" select$/ 
*/ 
public function selectState($option, $name) { 
    $page   = $this->getSession()->getPage(); 
    $selectElement = $page->find('xpath', '//select[@data-name = "' . $name . '"]'); 

    $selectElement->selectOption($option); 
} 
Behat이 그것을 발견되지 않기 때문이다
+1

이것은 작동합니다! REGEX가 끝날 때부터 "$ /"가 누락 된 것입니다. * @When/^ "(? P) \"상태를 선택합니까? $/ – user3385054

+0

Whooops가 미끄러졌습니다. 잘 목격되었다! –

+0

추신 : 마지막에 '?'가 필요하지 않습니다. 이를 사용하면 마지막 글자없이 문장을 사용할 수 있습니다. –