2011-02-10 2 views
1

같은 로케이터에 대해 다른 결과가 나타납니다.Selenium * ElementPresent 및 * XpathCount가 다른 결과를 제공합니까?

//table[@id='foo'] 

true를 반환 예를 들어 ElementPresent을 테스트 할 때,하지만 XpathCount 0 반환합니다. Selenium v1.0.10 IDE에서 Find 버튼은 두 기능에 대한 올바른 요소를 강조 표시합니다. 이 문제를 일으킬 수있는 아이디어가 있습니까?

참고 :

  • 우리는 페이지 편집에서 프레임을 가지고 : 이것은 아마도 문제입니다. 확인 증거금.
  • 이 페이지에 많은 테이블이 있지만, 3.6
  • 는 IDE와 자바 RC
+0

무엇 XML 문서 (완전한하지만 최소한의 예를 제공하십시오)입니까? XPath 표현식에서 참조 할 ElementPresent 요소가 보이지 않습니다. 이 "두 기능"은 무엇입니까? 너 나 혼란스러워! –

+0

@Dimitre - 이것이 셀레늄 테스트 프레임 워크 (http://seleniumhq.org/)에 대한 것이므로 XML이 HTML 페이지이고 'ElementPresent' 및'XpathCount' 기능이 셀레늄 기능임을 분명히하자. – Adam

+0

이 버그와 관련이있을 수 있습니까? http://jira.openqa.org/browse/SEL-692 – jasso

답변

1

음을 건너 뛰려면,이 검증은 더하지 않습니다 비 검증의

셀을 사용하여 GUI로 GUI를 테스트합니다. isElementPresent와 getXpathCount를 작동 시키려면 항상 selectFrame을 사용하여 프레임을 먼저 선택해야합니다 (정확하게 작동하려면 isElementPresent를 얻는 경우조차도). URL을 열면 프레임이 전혀 선택되지 않은 것처럼 보입니다.

이것은 HTML 및 해당 selectFrame 코드는 모습입니다 :

<frameset id="mainframeset"><frame name="nav" id="nav" src.... 

selenium.selectFrame("nav"); 
+0

감사합니다 ygram! 설정을 통해 프레임을 성공적으로 수행했다는 사실은 내가 올바른 프레임을 올바르게 선택하지 않는다는 것을 암시합니다. – Adam

+0

셀렌과 프레임을 사용할 때 테스트 케이스를 완벽하게 작동시키기가 어렵다. frame, waitForFrameToLoad 또는 waitForPageToLoad를 선택하기 전에 selectWindow (null)로 실험 할 수 있습니다. 나 또한 물건을 더 복잡하게 만드는 자바 스크립트가있다. 그러나 그것을 가능하게 할 수 있습니다. 행운을 빕니다! – ygram

0

이 XPath 식를 사용 모두에서 일어나는 "foo는"

  • 파이어 폭스의 @id 만 하나

    boolean(//table[@id='foo']) 
    

    count(//table[@id='foo']) 
    

    id 속성 값이 "foo"table 요소가있는 경우 위의 첫 번째 표현식은 true()으로 평가되어야하며 위의 두 번째 표현식은 양의 정수로 평가되어야합니다.

  • +0

    Dimitre, 나는 당신이 그 맥락을 이해한다고 생각하지 않는다. 이것은 함수 이름이'verifyElementPresent','assertElementPresent','assertXpathCount','storeXpathCount' 등 * Selenium *을 사용하고 있습니다. 문제는'* ElementPresent'가'true'이지만'* XpathCount '는'0 '을 녹음 중입니다. – Adam

    +0

    @ Adam : 컨텍스트를 이해하고 있으며이 두 가지 Selenium 함수를 사용하는 데 문제가 있음이 분명합니다. 이러한 이유 때문에 필자는 XPAth 식 대신에 * 함수를 사용하는 두 개의 XPAth 식을 제공하고 있으며 이로 인해 문제가 완전히 제거됩니다. 나는 * 귀하의 문제를 해결하여 그것을 제거했습니다. –

    +0

    아마 내가 셀레늄 내부에서 XPath 함수를 사용하는 방법을 이해하지 못합니다. 'selenium.getEval ("count (// table [@ id = 'foo'] // tr)")'구문 오류에 대해'SeleniumException'을 throw합니다. – Adam

    0

    이 질문에 대한 직접적인 대답은 아니지만이 내용을 읽고 요소를 반복하려는 경우 해결 방법이 될 수 있습니다. 이 같은 for 루프에서 isElementPresent를 사용하여 우리가 XPath는 이후 2에서 난을 시작

    for(int i = 2; selenium.isElementPresent("//table[@id='foo']//tr["+i+"]"); i++) 
    { 
        selenium.getText("//table[@id='foo']//tr["+i+"]//td["+columnNum+"]"); 
    } 
    

    참고 1 색인 우리는 헤더에게

    관련 문제