셀렌을 사용하여 웹 페이지를 테스트하고 있습니다. 나는 모든 '리프 요소와 텍스트를 포함하는 요소'를 원합니다. 나는 다음의 작동하는 XPath를 사용한다.자손 관계 + 셀렌의 색인 생성
//*[. != '' or not(*)]
위대한 작품입니다.
하지만 이제 각 요소를 반복하고 명령을 실행하고 싶습니다. 나는 실제로 자신의 직책을 원하지만 GetXpathCount를 사용하여 문제를 설명합니다.
int elementCount = this.selenium.GetXpathCount("//*[. != '' or not(*)]");
for (int i = 1; i <= elementCount; ++i)
{
Console.WriteLine(this.selenium.GetXpathCount("//*[. != '' or not(*)][" + i + "]"));
}
에 elementCount의 값은 242 이며 콘솔 출력 142 45 30 13 본체에 4 4 1 1 1 1 0 0 0 0 0 0 ... [200 다른 제로] 숫자이며 항상 elementCount에 합하지만 ~ 10 이후에는 항상 0입니다.
//*[. != '' or not(*)][1]
내 의도 한 의미를 가지고 있지 않습니다 내 XPath는 것을
그것은 나에게 분명했다.(//*[(. != '' or not(*))])[1]
야호 : 그리고 대신하고
//*[(. != '' or not(*)) and position() = 1]
그래서, 내가 괄호를 사용
에 해당 "부모의 첫 번째 자식 모든 잎 요소와 텍스트를 포함하는 모든 요소가"이 실수를 해결하기 위해 반환 . 콘솔 출력은 이제 모든 요소에 대해 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1입니다. 하지만 실제로 요소 @ 경로에 대한 연산을 수행하기 위해 루핑 코드를 업데이트 해 봅시다.int elementCount = this.selenium.GetXpathCount("//*[. != '' or not(*)]");
for (int i = 1; i <= elementCount; ++i)
{
Console.WriteLine(this.selenium.GetElementPositionLeft("(//*[. != '' or not(*)])[" + i + "]"));
}
아니오 !!! GetXpathCount는 작동하지만 GetElementPositionLeft (및 기타)는 모두 실패합니다. 뭐라 구요? 이 문제를 어떻게 해결할 수 있습니까? : [Selenium.SeleniumException] 여기
는 셀레늄 예외이다 { "ERROR 요소 [1]없는 (// [= '여부 ().!])"} { "ERROR : 요소 ( // [= '여부 ().!') [1]을 찾을 수 없습니다 "} 데이터 {} System.Collections.ListDictionaryInternal 헬프 : NULL 의 InnerException : NULL 메시지"ERROR : 요소 ( [.! = ''또는 없음 ()]) [1] 찾을 수 없음 " 출처 :"ThoughtWorks.Selenium.Core "
N00b 실수 : 대안 로케이터으로
xpath=
를 앞에보십시오, 나는 이것이 (자바) 다음과 같은 작업을 얻었다. 셀레늄은 시작 문자가 // 일 때 xpath임을 전제로합니다. 함수 GetXpathCount는 모든 식별자가 xpath임을 가정합니다. 내 실수는 xpath (// 경로) 주위에 대괄호를 추가하면 Selenium이 깨져서 xpath =를 추가해야한다는 것이 었습니다. 감사합니다. – Kenn