2017-12-16 10 views
0
내 웹 사이트에서 '관리자'값을 얻기 위해 노력하고 있어요

에서 요소를 찾을 수 없습니다이 내가 크롬을 사용하여 XPath를 복사 나는이 값을 가지고셀레늄 클래스

<td align="center" class="okm-DisableSelect">Administrator</td> 

요소에게 있습니다

/html/body/div[5]/div[3]/div/div[6]/div/div[4]/div/div[2]/table/tbody/tr[3]/td/div/div/div[2]/table/tbody/tr[3]/td[7] 

나는 이것을 시도했지만 'Unable to locate element'오류가 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

driver.findElement(By.xpath("/html/body/div[5]/div[3]/div/div[6]/div/div[4]/div/div[2]/table/tbody/tr[3]/td/div/div/div[2]/table/tbody/tr[3]/td[7]")).getText(); 

답변

1

먼저 XPath는 매우 방대하여 매우 부서지기 쉽습니다 (깨지기 쉽습니다). /html에서 시작하는 XPath를 사용해서는 안되며 실제로 몇 레벨 이상인 XPath를 사용해서는 안됩니다. 어쩌면 3-5.

둘째, XPath의 문제점을 확인하기에 충분한 정보가 제공되지 않았습니다. 가장 좋은 방법은 XPath 복사를 사용하지 않는 것입니다. 일반적으로 XPath를 크고 부서지기 쉬운 XPath로 연결하기 때문입니다. 이상적으로 XPath 대신 CSS 선택기를 사용하는 것이 좋습니다. 왜냐하면 CSS 선택기가 지원되고, 빠르며, 제작하기 쉽기 때문입니다. 몇 가지 도구를 사용하는 대신 수공예품을 배우는 데 시간을 할애해야합니다. 왜냐하면 도구를 사용하는 것이 더 짧고 덜 부서지기 때문입니다.

제공된 HTML을 사용하면 과 같은 CSS 선택기부터 시작하여 작동하는지 확인하십시오. 그렇지 않으면 포함 된 텍스트 인 "Administrator"를 사용하여 XPath로 폴백 할 수 있습니다. //td[.='Administrator']. 확실한 것은 더 많은 옵션이 있지만 HTML이 없으면 무엇이 될지 말할 수 없습니다.