2013-03-03 2 views
2

바닥 글의 항목에 대한 정규식이 "다음을 누르십시오"(버튼) 또는 "다음을 따르십시오"을 사용하려고하면 오류가 발생합니다. "요소/링크 id | link | name을 (를) 찾지 못했습니다. "예를 들어이 공개 사이트 (earthdata.nasa.gov 사이트)에서이 예외를 발견했습니다 (저희 사이트는 아직 활성화되지 않았습니다). 화면 왼쪽의 '의견'버튼은 클릭 할 수 없습니다 (sic).Behat/Mink 바닥 글에있는 버튼을 클릭하여 시뮬레이션 할 수 없습니다.

셀레늄 2.29.0 서버에 대한 테스트를 실행하고 있습니다. Mink가 위에서 언급 한 "Feedback"버튼과 같은 링크를 찾고 "클릭"할 수 있도록 확장시키는 방법은 무엇입니까?

+1

무엇이 당신의 질문인가요? 너 뭐 해봤 니? 코드는 어디에 있습니까? 또한 NASA 사이트의 피드백 버튼은 포인터에 대해 [tag : google-chrome] –

답변

7

링크를 클릭하기 위해 id를 사용하는 대신 XPath를 사용하여 링크를 클릭 할 수 있습니다. XPath는 DOM 내에서 객체를 식별하는 보편적 인 방법이므로 항상 작동합니다.

Behat을 사용하지 않은 분들을 위해이 링크를 사용하십시오. 그것은 기본적으로 Selenium 도구를 감싸는 래퍼입니다.

http://mink.behat.org/

그리고 셀레늄 웹 자동화 테스트 사이트에 액세스하려면이 옵션을 사용

http://docs.seleniumhq.org/download/

편집 :

이안 : 감사 맥가이버의 포인터는 여기의 해결책이를 :

/** Click on the element with the provided xpath query 
* 
* @When /^I click on the element with xpath "([^"]*)"$/ 
*/ 
public function iClickOnTheElementWithXPath($xpath) 
{ 
    $session = $this->getSession(); // get the mink session 
    $element = $session->getPage()->find(
     'xpath', 
     $session->getSelectorsHandler()->selectorToXpath('xpath', $xpath) 
    ); // runs the actual query and returns the element 

    // errors must not pass silently 
    if (null === $element) { 
     throw new \InvalidArgumentException(sprintf('Could not evaluate XPath: "%s"', $xpath)); 
    } 

    // ok, let's click on it 
    $element->click(); 

} 
+1

에게 감사드립니다. 위에 삽입 된 샘플 구현은 다음과 같습니다. –