2012-06-28 3 views
0

저는 Behat과 Selenium 서버를 가지고 놀고 있습니다. 문서의 위치를 ​​기반으로 특정 태그를 타겟팅하려고합니다.셀레늄 :이 표현식은/Xpath가 아닌 합법적 인 표현입니다.

GUI 인 AquaPath를 사용하여 XPath로 게임하고 정상적으로 작동합니다. 내 문제는 내가 Behat/Selenium에서 같은 표현식을 시도 할 때 "표현식이 합법적 인 표현식이 아닙니다"라는 오류 메시지가 있다는 것입니다. 나는이 속성을 갖는 다섯 번째 레이블 요소의 "에 대한"속성을 찾고 있어요

(//label)[5]/@for 

:

여기 내 XPath는 것입니다.

The given selector //html//(label)[1] is either invalid or does not result in a WebElement. The following error occurred: 
[InvalidSelectorError] Unable to locate an element with the xpath expression //html//(label)[1] because of the following error: 
[Exception... "The expression is not a legal expression." code: "51" nsresult: "0x805b0033 (NS_ERROR_DOM_INVALID_EXPRESSION_ERR)" location: "file:///var/folders/66/bv_nvdt97f33pm2qn78v_8qc0000gn/T/anonymous5419845357799771264webdriver-profile/extensions/[email protected]/components/driver_component.js Line: 2621"] 
Command duration or timeout: 6 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html 
Build info: version: '2.23.1', revision: '17143', time: '2012-06-08 18:59:04' 
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.4', java.version: '1.6.0_33' 
Driver info: driver.version: EventFiringWebDriver 
Session ID: c3bdf2e6-5042-ac4a-95c5-4735f4318899 

어떤 생각 : 여기

은 (HTML이 자동으로 추가됩니다 // 참고) 전체 로그입니다 ... 쉽게 보이지만 작동하지 않고 정말 왜 몰라?

<!DOCTYPE html> 
<html> 
    <head></head> 
    <body> 
    <form action="" method="get" accept-charset="utf-8"> 
     <label for="label1"></label> 
     <label for="label2"></label> 
     <div> 
     <label for="label3"></label>   
     </div> 
     <fieldset> 
     <div> 
      <label for="label4"></label> 
     </div>   
     </fieldset> 
     <label for="label5"></label> 
     <label for="label6"></label> 
     <label for="label7"></label> 
     <label for="label8"></label> 
     <label for="label9"></label> 
     <p><input type="submit" value="Continue &rarr;"></p> 
    </form> 
    </body> 
</html> 
+0

일치하는 HTML을 제공 할 수 있습니까? –

+0

내 글을 편집 할 때 완료됩니다. 감사. – tvial

답변

0

(//fieldset//label)[5]/@for의 시도 : 여기

는 (라벨 같은 깊이에 항상하지 않습니다)에 HTML입니다 속성 만 가져올 수는 없으며 요소 만 가져올 수 있습니다. 속성을 얻는 것은 "getAttribute()"를 통해 이루어져야합니다.

0

내 의견 "XPath는"선택과 방법을 ") (찾을 수"있다는 것이다 (//fieldset/label)[5]/@for 대신

+0

셀렉터가 주어집니다 : $ this-> getSession() -> getPage() -> 찾기 ('xpath', "(//fieldset//label)[".$labelHash['position']."]/@for "); – tvial