2014-03-12 2 views
0

Java에서 Selenium WebDriver를 사용하여 웹 사이트 테스트 프로그램을 작성하는 과정에서 동료의 다소 복잡한 HTML을 탐색하고 있습니다. 상황은 지금까지 잘 진행되고 있습니다 (이미 유용한 도움말을 발견하여 사용했습니다).하지만이 HTML에서 특정 요소를 타겟팅하는 방법에 대해 고민하고 있습니다.xpath를 사용하여 Selenium으로 HTML 요소 타겟팅하기

<tr> 
<td valign="top" class="col_1"> 
    <a target="content" href="link_text_omitted" class="no">RLS DISABILITY 
    </a> 
</td> 
<td class="col_2"> 
    <a target="asdf" href="https://link_text_omitted"> 
    </a> 
</td> 
<td class="col_3"> 
</td> 
<td class="col_4">$0.00 </td> 
<td class="col_5">180/180- $3300.00</td> 
<td class="col_6"> 
    <a target="content" href="link_text_omitted" class="ecurrent">$43.23 
    </a>  
</td> 
</tr> 

개인 정보 보호를 위해 위의 URL을 삭제했습니다. 페이지에 1233 개의 다른 <tr> 요소가 있지만 형식은 같지만 텍스트 값과 달러 금액은 각각 (col_1, col_4, col_6)입니다. [td class="col_6"]에서 $ 43.23의 텍스트와 [td class="col_4"]의 $ 0.00에 액세스해야합니다. 페이지에 다른 요소가 있기 때문에 [a class = "ecurrent"]뿐만 아니라 [td class="col_6"]이기도하므로 클래스 이름으로 선택할 수는 없습니다.

다른 유사한 요소와 관련하여이 요소의 실제 식별 특성은 [td class="col_1"]의 "RLS DISABILITY"텍스트와 생략 된 URL의 일부 텍스트입니다.

나는 그것을 얻기 위해 몇 가지 복잡한 xpath 문자열을 사용해 왔지만, 내가 원하는 것을 얻을 수는 없다. 내가 처음 [TD]를 선택 생각

WebElement RLSDisabilityName = driver.findElement(By.xpath("//td[a/text()='RLS DISABILITY']")); 

(그러나 나는 확실하지 않다) : 지금까지가 가장 가까운 것은 이것이다.

By.partialText를 사용하여 $ 43.23으로 [a] 태그를 선택할 수 있다고 생각하지만 부분 텍스트는 꽤 긴 URL 조각이며 다른 유사한 웹 사이트에서이 휴대용을 사용하고 싶습니다. .

모든 의견을 크게 환영합니다. :)

+0

요소가 어떤 행에 있는지 알고 계십니까? 제 말은 첫 번째/두 번째'tr' 태그 안에 항상 들어 있습니까? – donfuxx

+1

코드에서 일부 ID 속성을 추가하도록 동료에게 설득 해보세요. – donfuxx

답변

0

나는 당신이 정직한 길로 가고 있다고 생각합니다. 이식성에 대해 걱정하지 마라. HTML은 단순히 이식성이 충분하지 않다.

확실히 XPath 선택기를 사용하여이 작업을 수행 할 수 있습니다.이 XPath 선택기는 확실히 올바른 경로에 있습니다.

즉, 또 다른 가능성은 각각 tdList<WebElement>을 만드는 것입니다. 그런 다음 목록을 반복하여 좋아하는 것을 꺼낼 수 있습니다. 이렇게하면 getText() 등과 같은 메소드에 액세스 할 수 있습니다.

관련 문제