728x90
반응형
회사 코드 개선 중에 selenium이 더이상 PhantomJs를 지원하지 않아 크롬으로 변경 하려 한다.
Chromedriver install
# linux
wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
unzip chromedriver.zip chromedriver .
# macos (local test)
wget -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_mac64.zip
unzip chromedriver_mac.zip chromedriver .
반응형
Python code
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import NoSuchElementException
DRIVER_PATH = {chromedriver path}
option = webdriver.ChromeOptions()
option.add_argument("--headless")
option.add_argument("--no-sandbox")
option.add_argument("--disable-dev-shm-usage")
service = Service(executable_path=DRIVER_PATH)
driver = webdriver.Chrome(service=service, options=option)
주의사항 error code 127
위 코드의 주의사항은 크롬이 설치되지 않았을 때 발생하는 코드다.
크롬을 쓰는 로컬이라면 괜찮은데 도커 같은 경우는 크롬을 설치해줘야 한다.
Dockerfile
...
RUN apt-get update \
&& apt-get install -y sudo wget
RUN apt -y install gnupg gnupg1 gnupg2
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
RUN apt-get update
RUN apt-get -y install google-chrome-stable
...
selenium4
selenium 4 로 업그레이드 되면서 많은게 바뀌었는데 가령 find_elements_by_id 같은게 바뀌었다.
from selenium.webdriver.common.by import By
이제 이걸 통해 가져와야 한다.
# 셀레니움 3
selenium 3 | |
driver.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") |
# 셀레니움 4
selenium 4 | |
driver.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") |
728x90
반응형
'개발 > DOCKER' 카테고리의 다른 글
AWS ec2 에 docker 설치 / gitlab-runner 설치 (0) | 2022.12.05 |
---|