Selenium이 요소의 텍스트를 얻을 수없는 경우의 해결 방법
스크래핑에 자주 사용하는 Selenium에서 잘 요소의 텍스트를 얻을 수 없을 때의 대책 방법
빠지기 쉬운 포인트
- 클래스 이름에 공백이 포함되어 있습니다.
- 클래스 이름이 있지만 텍스트를 얻을 수 없습니다.
이번에는, 이 2개의 포인트에 대해서 대처법을 정리합니다.
클래스 이름에 공백이 포함된 경우
자바스크립트라면 공백이 있어도
document.getElementByClassName("class name").innerText;
와 같이, 그대로 클래스명을 기술하는 것만으로,
지정한 클래스명의 텍스트 요소는 간단하게 취득할 수 있습니다.
Selenium으로 대체하는 경우,
WebDriver.findElement(By.cssSelector("div[class='class name']")).getText().toString();
와 같이 By.cssSelector를 사용하여,WebDriver.findElement(By.cssSelector("{タグ名}[class='{クラス名}']"))
로 지정하면 잘 텍스트 요소를 얻을 수 있습니다.
다음에 클래스명은 맞는데 텍스트를 취득할 수 없는 경우
Selenium에서 검색할 수 있는 요소의 태그 유형을 명확하게 확인하지는 않았지만,
주로 div
, a
, table
, tr
, td
span
태그나 b
태그 그 외의 요소를 식별하려면 Xpath로 요소를 직접 지정하거나,
취득하고 싶은 요소의 부모 요소로 div
태그의 요소의 클래스명을 지정해, 취득이 가능하게 됩니다.
<div class="div_class_name">
<b class="b_class_name">
<span class="span_class_name">取得したいテキスト</span>
</b>
</div>
이 경우, div
태그의 클래스명 "div_class_name
"를 이용해 텍스트의 취득이 가능합니다.
Xpath를 사용하는 경우,
Chrome 개발 도구를 사용하여 요소에 마우스가 포커스를 둔 상태에서
오른쪽 클릭 → [Copy] → [Copy XPath]
에서 XPath를 얻을 수 있으므로,
WebDriver.findElement(By.xpath("{xpath}")).getText();
로 텍스트를 얻을 수 있습니다.
이상입니다.
그것과 기사의 주제와는 달라지지만,
JavaScript와 Selenium에서는 스크롤 처리가 미묘하게 엇갈리는 곳이 있으므로,
그 점도 주의가 필요하네요.
자바스크립트에서는 잘 취득할 수 있어도 Selenium이라고 가끔 예상대로 동작하지 않을 때가 있으므로,
최악, 자바코드 안에 자바스크립트코드를 내장하여 가동시킬 수도 있으므로,
심지어 알면 괜찮습니다!
Reference
이 문제에 관하여(Selenium이 요소의 텍스트를 얻을 수없는 경우의 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takuma-jpn/items/2a11ccf949a55af1ce3b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
document.getElementByClassName("class name").innerText;
WebDriver.findElement(By.cssSelector("div[class='class name']")).getText().toString();
<div class="div_class_name">
<b class="b_class_name">
<span class="span_class_name">取得したいテキスト</span>
</b>
</div>
WebDriver.findElement(By.xpath("{xpath}")).getText();
Reference
이 문제에 관하여(Selenium이 요소의 텍스트를 얻을 수없는 경우의 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takuma-jpn/items/2a11ccf949a55af1ce3b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)