[PYTHON] 셀레늄 python find_element_by_class_name () v 2.2에서 작동을 중지 2.21 - '복합 클래스 이름'을 사용할 수 없습니다.
PYTHON셀레늄 python find_element_by_class_name () v 2.2에서 작동을 중지 2.21 - '복합 클래스 이름'을 사용할 수 없습니다.
나는 Selenium의 파이썬 라이브러리를 사용하여 Firefox의 HTML 페이지에서 데이터를 긁어 낸다.
서버가 Firefox를 업데이트했기 때문에 Selenium 2.0에서 2.21로 업데이트해야했습니다.
v 2.21에서 find_element_by_class_name ( "grid-cell-inner grid-col-name") 호출은 다음과 함께 실패합니다.
selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'
액세스하려는 요소의 클래스 이름은 grid-cell-inner grid-col-name입니다.
find_element_by_class_name ()에 대한 호출은 v 2.2에서 작동했기 때문에 논리가 정확하고 데이터를 OK로 사용했습니다. 2.21에서 뭔가 바뀌 었습니다.
모든 Selenium 예제는 클래스 이름 foo 등의 간단한 예제를 제공하며 액세스해야하는 이름 유형은 제공하지 않습니다.
Selenium은 왜 grid-cell inner grid-col-name과 같은 이름의 클래스 찾기를 중단 했습니까?
누군가 "복합"클래스 이름을 가진 요소를 찾도록 도와 줄 수 있습니까?
감사.
해결법
-
==============================
1.WebDriver의 문제점은 여전히 발전하고 있다는 것입니다. 많이. 개인적으로 한 명령에서 많은 클래스에 의한 검색을 지원하는 버전을 알지 못하기 때문에 꽤 오래된 버전이었을 것입니다. :)
WebDriver의 문제점은 여전히 발전하고 있다는 것입니다. 많이. 개인적으로 한 명령에서 많은 클래스에 의한 검색을 지원하는 버전을 알지 못하기 때문에 꽤 오래된 버전이었을 것입니다. :)
그러나 CSS 선택기로 검색하면 효과가 있습니다.
find_element_by_css_selector(".grid-cell-inner.grid-col-name");
이 두 가지 표현식이 다른 점 때문에 XPath를이 특정 용도로 사용하는 것은 권장하지 않습니다.
// * [class = 'grid-cell-inner grid-col-name']
// * [class = 'grid-col-name grid-cell-inner']
-
==============================
2.".name.name.name"형식으로 CSS 선택기를 사용해야합니다. 원하는 수만큼 지정할 수 있습니다. "."
".name.name.name"형식으로 CSS 선택기를 사용해야합니다. 원하는 수만큼 지정할 수 있습니다. "."
또는 전체 속성을 일치시킬 수 있습니다 (xpath를 사용하여이 작업을 수행 할 수도 있습니다). "[class = 'exact class name here']" XPath - "// [@ class = '정확한 클래스 이름은 여기에']"
클래스를 동적으로 생성하는 경우 도움이되는 시작과 함께 시작하거나 끝나는 방법 또는 CSS와 xpath 둘 다 포함하는 방법이 있습니다.
-
==============================
3.Selenium은 매우 오랜 시간 동안 복합 클래스 이름을 지원하지 않았습니다.
Selenium은 매우 오랜 시간 동안 복합 클래스 이름을 지원하지 않았습니다.
말할 필요도없이 XPath 또는 CSS 셀렉터를 통해 또는 "grid-cell-inner"클래스 이름으로 필터링 한 다음 어떤 요소가 "grid-cell-inner grid-col-name"클래스인지 확인하십시오.
-
==============================
4.또한 시도하십시오 :
또한 시도하십시오 :
elements = bot.execute_script("""return document.getElementsByClassName('grid-cell-inner grid-col-name')""")
from https://stackoverflow.com/questions/10658907/selenium-python-find-element-by-class-name-stopped-working-from-v-2-2-to-2-21 by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] SciPy를 사용한 베 지어 커브 피팅 (0) | 2018.11.26 |
---|---|
[PYTHON] OperationalError : (OperationalError) (2003, " '192.168.129.139'(111) '의 MySQL 서버에 연결할 수 없음) 없음 없음 (0) | 2018.11.26 |
[PYTHON] Windows의 Python 3에서 "로케일 기본 인코딩"변경 (0) | 2018.11.26 |
[PYTHON] sklearn : TFIDF Transformer : 문서에서 주어진 단어의 tf-idf 값을 얻는 법 (0) | 2018.11.26 |
[PYTHON] Matplotlib 3D 플롯 zorder 문제 (0) | 2018.11.26 |