selenium 4

[Selenium] AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'

현상 오랜만에 이전에 Selenium으로 만들어두었던 Python 코드를 살펴봤다. 실행을 시켜보고자 Selenium 패키지와 크롬 드라이버를 새로 설치하고 실행시켰더니 아래와 같은 에러가 발생했다. 원인 기존에 selenium 3.141.0을 사용하다가 최신 버전인 selenium 4.9.1을 설치해서 테스트했는데, 확인해보니 Selenium의 버전이 올라가면서 find_element 관련 함수에 변경이 있었던 모양이다. find_element_by_xpath, find_element_by_id, find_element_by_xpath와 같이 검색 기준 별로 함수를 제공하는 대신 find_element 함수로 통합된 것으로 보인다. 해결 find_element_by_XXX 함수 대신 find_eleme..

Python 2023.05.29

[Selenium] 명시적 대기 (Explicit Wait)

2021.11.09 - [Selenium] 암시적 대기(Implicit Wait) 위 글에서는 Selenium의 대기 방식 중 웹 페이지가 모두 로딩될 때까지 기다리는 암시적 대기 방식에 대해 다뤘다. 이 글에서는 Selenium의 대기 방식 중, 명시적 대기 방식에 대해 다룬다. 명시적 대기 (Explicit Wait) 지정한 요소가 웹 페이지 내에서 지정한 조건을 만족할 때까지 기다린다. 필요성 Ajax를 이용해 동적 변경이 발생하는 웹 페이지인 경우 Web Elemnet가 나타날 때까지 시간이 걸릴 수 있는데, Web Element가 나타나기 전에 참조하고자 하면 오류가 발생할 수 있으므로 대기하는 시간이 필요하다. 암시적 대기는 웹 페이지 전체가 로딩될 때까지 기다리는 반면 명시적 대기는 특정 요..

Python 2021.11.13

[Selenium] Element 텍스트 읽기

selenium에서 특정 Element의 텍스트 값을 읽는 방법을 적어둔다. 크롬 드라이버 기준이다. text 기본적으로 특정 Element의 텍스트 값을 읽을 때는 text 함수를 호출한다. text 함수는 엘리먼트의 text property를 읽는다. text = driver.find_element_by_xpath('').text ## 구현부 def text(self): """The text of the element.""" return self._execute(Command.GET_ELEMENT_TEXT)['value'] 하지만 엘리먼트 내에 문자가 존재함에도 불구하고 빈 문자열을 반환하는 경우도 존재한다. 요소에 text property가 없어서 다른 속성에 값이 설정되어 있기 때문인 듯하다. g..

Python 2021.09.15

[Selenium] 다음 로그인하기

브라우저 제어 도구인 Selenium을 이용해 다음(www.daum.net)에 로그인하는 코드를 작성하려고 한다. 설치 과정은 2021.07.14 - [CentOS] Chrome 및 Selenium 설치 을 참고한다. 다음 로그인 과정 프로그램을 작성하기 전에 먼저 다음 로그인을 하기 위해서는 어떤 과정이 필요한지 확인해본다. 1. 다음(www.daum.net) 홈페이지 접속 2. 로그인 방식 선택 이 글에서는 '카카오 계정으로 로그인' 하려고 한다. 3. 계정 정보 입력 4. 로그인 버튼 클릭 위 과정에 따라 코드를 작성하도록 한다. 코드 작성 1. 라이브러리 import 및 크롬 드라이버 선언 from selenium import webdriver driver_path = 'D:\\projects\\..

Python 2021.09.08
1