selenium AttributeError 'Webdriver' object has no attribute 'find_element_by ... 에러
글. 수알치 오상문
셀레니움 상위 버전(4)에서 나타나는 에러입니다. find_element_by...() 함수를 사용하지 말고 다음 예제처럼 사용해야 합니다. 먼저 다음처럼 임포트를 추가합니다.
from selenium.webdriver.common.by import By
driver(또는 browser 같은)라는 인스턴스를 사용한다고 가정할 때...
driver.find_element(), driver.find_elements() 함수에서 아래 옵션을 지정하여 사용합니다.
By.ID 태그 id 값으로 추출
By.NAME 태그 name 값으로 추출
By.XPATH 태그 경로로 추출
By.LINK_TEXT 링크 텍스트 값으로 추출
By.PARTIAL_LINK_TEXT 링크 텍스트의 자식 텍스트 값 추출
By.TAG_NAME 태그 이름으로 추출
By.CLASS_NAME 태그 클래스명으로 추출
By.CSS_SELECTOR CSS 선택자로 추출
즉, 다음 예제처럼 사용합니다.
elem = driver.find_element(By.NAME, "q")
title = driver.find_element(By.XPATH, r'//*[@id="bestList"]/ol/li[1]/p[1]').text
driver.find_element(By.XPATH, r'//*[@id="divYes24SCMEvent"]/div[2]/div[2]/a').click()
[참고] 셀레니움 3, 4 비교
셀레니움 3 | 셀레니움 4 (Python 3.7 이상) |
Pythoncaps = {}caps['browserName'] = 'firefox' caps['platform'] = 'Windows 10' caps['version'] = '92' caps['build'] = my_test_build caps['name'] = my_test_name driver = webdriver.Remote(cloud_url, desired_capabilities=caps) |
Pythonfrom selenium.webdriver.firefox.options import Options as FirefoxOptionsoptions = FirefoxOptions() options.browser_version = '92' options.platform_name = 'Windows 10' cloud_options = {} cloud_options['build'] = my_test_build cloud_options['name'] = my_test_name options.set_capability('cloud:options', cloud_options) driver = webdriver.Remote(cloud_url, options=options) |
Javadriver.find_element_by_class_name("className");driver.find_element_by_css_selector(".className"); driver.find_element_by_id("elementId"); driver.find_element_by_link_text("linkText"); driver.find_element_by_name("elementName"); driver.find_element_by_partial_link_text("partialText"); driver.find_element_by_tag_name("elementTagName"); driver.find_element_by_xpath("xPath"); driver.find_elements_by_class_name("className"); driver.find_elements_by_css_selector(".className"); driver.find_elements_by_id("elementId"); driver.find_elements_by_link_text("linkText"); driver.find_elements_by_name("elementName"); driver.find_elements_by_partial_link_text("partialText"); driver.find_elements_by_tag_name("elementTagName"); driver.find_elements_by_xpath("xPath"); |
Javadriver.findElement(By.className("className"));driver.findElement(By.cssSelector(".className")); driver.findElement(By.id("elementId")); driver.findElement(By.linkText("linkText")); driver.findElement(By.name("elementName")); driver.findElement(By.partialLinkText("partialText")); driver.findElement(By.tagName("elementTagName")); driver.findElement(By.xpath("xPath")); driver.findElements(By.className("className")); driver.findElements(By.cssSelector(".className")); driver.findElements(By.id("elementId")); driver.findElements(By.linkText("linkText")); driver.findElements(By.name("elementName")); driver.findElements(By.partialLinkText("partialText")); driver.findElements(By.tagName("elementTagName")); driver.findElements(By.xpath("xPath")); |
Pythonpip install selenium==4.0.0 |
|
Pythonfrom selenium import webdriveroptions = webdriver.ChromeOptions() options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options) |
Pythonfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Service as ChromeService options = webdriver.ChromeOptions() options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) service = ChromeService(executable_path=CHROMEDRIVER_PATH) driver = webdriver.Chrome(service=service, options=options) |
<출처> https://www.selenium.dev/documentation/webdriver/getting_started/upgrade_to_selenium_4/
'웹 크롤링, 스크래핑' 카테고리의 다른 글
셀레니움, HTML Table 구조 읽기 (0) | 2022.07.10 |
---|---|
셀레니움, 웹브라우저 OFF 상태로 크롤링 하는 옵션 (0) | 2022.07.09 |
셀레니움, 페이지 로딩 기다리기 (특정 조건) (0) | 2022.07.09 |
크롬 드라이버 자동 다운로드 및 DeprecationWarning: executable_path has been deprecated, please pass in a Service object (0) | 2022.07.09 |
셀레니움, 구글 이미지 검색하여 다운로드 하기 (0) | 2022.07.09 |