2013-11-21 1 views
0

Behat을 사용 중이며 일부 양식 요소를 선택하려고합니다.xPath에서 셀 내의 여러 요소 중 하나를 선택하십시오.

내 HTML은 다음과 같습니다. 기본적으로 입력란 하나와 텍스트 입력란 두 개와 확인란이 있습니다.

//table/tbody/tr/td/input 

그리고 이것은 분명히 입력에 대한 잘 작동 -하지만 텍스트 영역을 추가하고 그것을 확인하려고 할 때, 그것은을 찾을 수 없습니다 : 양식 요소를 가져옵니다

<table class="table"> 
    <thead> 
     <tr> 
      <th>Delete</th> 
      <th>Question</th> 
      <th>Reference</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><input type="checkbox" name="delete" /></td> 
      <td><textarea name="question" required="required"></textarea></td> 
      <td><input type="text" required="required" name="reference" /></td> 
     </tr> 
    </tbody> 
</table> 

내 XPath는 선택이다 textarea, 왜냐하면 그건 입력이 아니야.

나는 이것을 시도했다 : //table/tbody/tr/td/(input or textarea) 그리고 "or", | 등등을 사용하는 몇 가지 변형. 일치 시키려고하는 여러 유형의 요소를 지정하는 방법을 알 수 없다.

감사의 말 전진! :)

답변

5

PHP의 XPath는 프로세서에만 경로 단계에서 교대를 허용하지 않습니다 XPath는 1.0을 지원합니다.

//table/tbody/tr/td/input | //table/tbody/tr/td/textarea 

또는 이름 테스트 동안와 술어를 사용 : 유효한 의 XPath 2.0 표현

//table/tbody/tr/td/(input, textarea) 

을했을 것이다 XPath는 1.0은 다음과 같이 전체 경로를 제공하거나 당신이 필요합니다 와일드 카드 노드 테스트 사용 :

//table/tbody/tr/td/*[local-name() = 'input' or local-name() = 'textarea'] 

XML 파일은 한 번만 스캔되기 때문에 후자의 버전이 성능면에서 바람직합니다.

+0

대단히 감사합니다. local-name()이 내가 찾고있는 곳입니다. :) – Jessica

1

Behat/PHP에서는 테스트되지 않았지만, XPath 구문을 따르는 경우에는 이렇게 보입니다.

//table/tbody/tr/td/input | //table/tbody/tr/td/textarea