반응형
<div id="a">This is some
<div id="b">text</div>
</div>
"This is some"을 얻는 것은 중요하지 않습니다. 예를 들어 "This is some text"를 반환합니다.
driver.find_element_by_id('a').text
일반적으로 자식의 텍스트를 포함하지 않고 특정 요소의 텍스트를 얻는 방법은 무엇입니까?
(저는 아래에 답변을 제공하고 있지만 누군가가 덜 끔찍한 해결책을 제시 할 수있는 경우 질문을 열어 두겠습니다).
해결 방법
일반적인 해결책은 다음과 같습니다.
def get_text_excluding_children(driver, element):
return driver.execute_script("""
return jQuery(arguments[0]).contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
}).text();
""", element)
함수에 전달 된 요소는 find_element ... ()
메소드에서 가져올 수 있습니다 (즉, WebElement
객체 일 수 있음).
또는 jQuery가 없거나 사용하고 싶지 않다면 위의 함수 본문을 다음과 같이 바꿀 수 있습니다.
return self.driver.execute_script("""
var parent = arguments[0];
var child = parent.firstChild;
var ret = "";
while(child) {
if (child.nodeType === Node.TEXT_NODE)
ret += child.textContent;
child = child.nextSibling;
}
return ret;
""", element)
실제로 테스트 스위트에서이 코드를 사용하고 있습니다.
참조 페이지 https://stackoverflow.com/questions/12325454
반응형
'파이썬' 카테고리의 다른 글
파이썬 Windows에서 setup.py를 통해 Python 모듈을 설치하는 방법은 무엇입니까? (0) | 2021.02.07 |
---|---|
파이썬 Python : 튜플 인덱스는 mysql 테이블에서 선택할 때 str이 아닌 정수 여야합니다. (0) | 2021.02.07 |
파이썬 줄 바꿈없이 파일을 읽는 방법? (0) | 2021.02.07 |
파이썬 코드 내에 파이썬 모듈 설치 (0) | 2021.02.06 |
파이썬 Python에 Multiline Lambda가 없음 : 왜 안됩니까? (0) | 2021.02.06 |
댓글