2013-04-30 5 views
0

여기org.openqa.selenium.InvalidElementStateException : 유효하지 않은 요소 상태 : 구문 에러

driver.findElements(By.cssSelector(".main-menu a:contains(\"Access Menu\")")).size() 

하는

org.openqa.selenium.InvalidElementStateException: invalid element state: SyntaxError: DOM Exception 12 

같은 CSS 값이 $(".main-menu a:contains(\"Access Menu\")").size()

+3

'contains()'는 CSS 선택자가 아닙니다. WebDriver가 사용하고있는 것으로 의심되는'querySelectorAll()'에 의해 DOM 예외가 발생하여 jQuery를 우회합니다. – BoltClock

답변

1

즉, JQuery와에 노력하고 예외를 던지고 내 코드입니다 <a>의 HTML을 사용할 수 있습니까?

DOM Exception 12은 일반적으로 HTML 구문에 문제가 있기 때문에 어쩌면 jQuery은 상관하지 않지만 WebDriver은 예외를 throw합니다.

편집 (후 BoltClock 개입) :

대신 CssSelector의 XPath를 사용하는 또 다른 방법이있다!

"//*[@class='.main-menu']/a[contains(text(),'Access Menu')]" 

내게 어떤 것이 있는지 말해 달라.

+0

아니요, 선택기 구문에 문제가 있습니다. – BoltClock

+0

@BoltClock 내 잘못, 내 op. – e1che

+2

첫 번째 부분은'// * [@ class = '. 메인 메뉴']'대신'// * [@ class = 'main-menu']'가되어야합니까? 또한 DOM을 가지고 있지 않기 때문에'/ * [contains (@class, 'main-menu')]]를 사용하면 더 좋을 것입니다.'main-menu'만이 유일한 클래스라고 약속 할 수 없습니다. –

관련 문제