2011-01-03 3 views
1

아래 HTML과 코드를 사용하여 <td> 클래스를 검색하고 있습니다.Selenium/XPath를 사용하여 아래 HTML에서 TD 클래스를 어떻게 검색합니까?

<td class='dataValueRead RV2' style=''>Constant</td> 

**

driver.findElement(
    By.xpath("//td[contains(normalize-space(.),'Constant')]") 
).getAttribute("class") 

그것은 나에게 출력으로 빈 값을 제공합니다. 내가 잘못 가고있는 모든 단서는?

+1

는 XPath 괜찮 : -이 경우 네임 스페이스를 등록하고 XPath 식에 접두사를 사용해야합니다 (읽을 이에 대한 질문과 답변이 많이있다). '// td'와'// td [contains (normalize-space(), 'Constant')]'에 대한 질의는 무엇입니까? – Tomalak

+0

@ user561337 : 그 XPath 표현은 그 'td' 요소를 선택해야합니다 –

답변

0

XPath를 사용하여 특성에 직접 액세스하면 안됩니까 (td/@class)?

+0

고마워요 – user561337

3

그냥를 사용

//td[contains(normalize-space(.),'Constant')]/@class 

위의 표현은 하나 개 이상의 노드를 선택할 수 있음을주의 마십시오.

이러한에서 단지 N 번째 노드를 선택 이런 종류의 XPath 식을 사용하여 (용 N = 1)

(//td[contains(normalize-space(.),'Constant')]/@class)[1] 

이들 중 어느 것도 그 이유는 어떠한 노드를 선택하지 않으면 수 : 그 문자열 값 문자열 'Constant'이 들어 더 td가 없기 때문에

  1. //td[contains(normalize-space(.),'Constant')]

    어떤 노드를 선택하지 않습니다. 정확한 대소 문자를 사용하고 있습니까? XPath 이고 대소 문자 구분은 'constant''Constant'과 다릅니다.

  2. //td[contains(normalize-space(.),'Constant')] 기본 네임 스페이스가 있으므로 노드를 선택하지 않습니다. //x:td[contains(normalize-space(.),'Constant')]

+0

+1. 철저한. – Flack

관련 문제