Behat + Mink를 사용하여 탭/창 제목 인 테스트 용 페이지 제목을 지정해야합니다.
getWindowName()을 시도했지만 그렇지 않습니다. 내가 찾고있는 기능.Behat + Mink에서 페이지/탭/창 제목을 지정하는 방법
0
A
답변
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');
}
}