2009-10-13 9 views
2

Firefox 테스트에서 Internet Explorer 테스트로 전환 한 후 더 이상 셀레늄으로 일부 요소를 찾을 수 없습니다. 그것은 파이어 폭스에서, 그것은 즉,이 요소를 찾을 수 없습니다 정상적으로 작동하지만xpath locator는 FF3에서 작동하지만 IE7에서는 작동하지 않습니다.

xpath=(//a[@class='someclass'])[2] 

:

내가 한 로케이터를 추적. 나는 현재 어떤 대안을 사용하고 있습니까? JS DOM? CSS 선택기? 이 로케이터는 어떻게 생겼을까요?

는 업데이트 : 내 지점을 만드는 예를 제공합니다

는 :

<ul> 
    <li> 
    <a class='someClass' href="http://www.google.com">BARF</a> 
    </li> 
    <li> 
    <a class='someClass' href="http://www.google.de">BARF2</a> 
    </li> 
</ul> 
<div> 
    <a class='someClass' href="http://www.google.ch">BARF3</a> 
</div> 

다음 XPath는 작동하지 않습니다

//a[@class='someclass'][2] 

내 이해에서이 동일해야합니다 예 :

//a[@class='someclass' and position()=2] 

및 모든 노드의 두 번째 자식 링크가 없습니다. 내가 원하는 것은 'someClass'클래스의 링크 집합에서 하나의 링크를 처리하는 것입니다.

답변

3

나머지 HTML 소스를 모르면 작동하도록 보장 된 대안을 제공하기가 어렵습니다. 바라건대 다음과 같은 제안은 올바른 방향으로 점을 당신을 도울 것입니다 :

  • //a[@class='someClass'][2]
    이것은 당신의 예처럼, 그러나 괄호가 필요하지 않습니다.

  • //a[contains(@class, 'someClass')][2]
    링크에 다른 클래스가있는 경우에도 작동합니다.

  • css=a.someClass:nth-child(2)
    링크가의 둘째 자식 요소 인 경우 에만 작업은 부모 윌의이.

업데이트

  • 당신의 갱신을 바탕으로, 다음과 같이 해보십시오
    //body/descendant::a[@class='someClass'][2]
+1

난 당신의 권장 솔루션에 동의하지만, 클래스가를하기 때문에 그냥하는 @ 놓친 속성 –

+0

사실, 나는 컨텍스트를 제공하지 않았지만이 xpath를 사용하여 내 의도를 설명 할 수 있습니다. 이러한 괄호는 페이지상의 지정된 클래스를 가진 모든 링크들. 그리고이 집합에서 나는 두 번째 요소에 액세스하려고합니다. 이러한 링크는 형제가 아니며 잠재적으로 페이지 전체에 흩어져있을 수 있습니다. 나는 Xpath보다 셀레늄을 사용하는 다른 위치 지정 방법을 알지 못한다. 그리고 문제는 여전히 남아 있습니다. IE에서 작동하지 않는 이유는 무엇입니까? thx –

+0

IE에서 권장 솔루션을 사용해 보셨습니까? 그것은 잘 작동합니다. –

관련 문제