selenium 소기 (프록시/헤드리스)
배경
selenium에서 다양한 작업을 할 때 얻은 지식의 메모
↓ 도입 방법
■ Selenium WebDriver 설치 ~ 이동해보기
덧붙여서 파이썬이라면 이런 느낌으로 폭속으로 시작하는 것도 가능
$ pip install selenium
# または
$ conda install selenium
베이스
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
부팅 옵션
--headless를 부여하여 헤드리스 모드로 부팅 가능
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
--no-sandbox를 부여하여 샌드박스 외부에서 동작
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(options=options)
프록시 설정
option.add_argument('--proxy-server=http://%s' % PROXY)
option.add_argument('--proxy-auth=%s' % PROXY_AUTH)
driver = webdriver.Chrome(options=options)
기존 창의 새 탭에서 열지 않고 새 창에서 열도록 설정
options.add_argument('--new-window')
driver = webdriver.Chrome(options=options)
onclick 속성으로 발화되는 js 실행
selenium에서 버튼계의 자동화하고 있을 때가 있는 것 같다.
js를 실행시키고 싶은 경우는 버튼 클릭이나 하지 않고도 아래와 같이 직접 실행이 가능
browser.execute_script('javascript:hogehoge();')
iframe 스위치
iframe = driver.find_element_by_id('wpnt-notes-iframe2')
# 取得したインラインフレームにスイッチ
driver.switch_to.frame(iframe)
quit과 exit의 차이
"driver.close()"
활성화된 탭만 종료.
"driver.quit()"
모든 탭을 닫고 브라우저를 종료합니다.
docker-selenium
selenium은 섬세한 상태에서 넣으면 조금 번거로운 절차가 필요합니다.
docker 같은 느낌으로 빨리 사용할 수 있을까라고 생각하고 조사하면 존재했습니다.
docker-selenium을 사용하여 본
VNC를 사용하여 내부에서 크롬을 움직이고 거기에서 작동하는 것 같습니다.
파일의 공유도 도커의 지식만 있으면 간단하게 할 수 있어 매우 편리할 것 같습니다.
VNC용의 컨테이너와 브라우저 테스트용의 컨테이너를 준비하는 것으로 개발 환경과는 분리된 테스트 환경도 이런 느낌으로 빨리 준비할 수 있군요.
version: '3.7'
services:
chrome-server:
build:
context: ./chrome
dockerfile: Dockerfile
container_name: 'chrome-server'
hostname: 'chrome-server'
ports:
- 9000:5900
- 4444:4444
environment:
- 'TZ=Asia/Tokyo'
- 'HUB_PORT_4444_TCP_ADDR=hub'
- 'HUB_PORT_4444_TCP_PORT=4444'
volumes:
- ./chrome/downloads:/root/Downloads
py-server:
build:
context: ./py-server
dockerfile: Dockerfile
container_name: 'py-server'
hostname: 'py-server'
environment:
- 'TZ=Asia/Tokyo'
tty: true
depends_on:
- chrome-server
volumes:
- ./py-server/src:/app/src
- ./py-server/images:/app/images
env_file:
- app.env
브라우저 테스트 환경이 docker로 완결되어 버리는 것은 매우 편리합니다.
참고
■ 크롬 시작 옵션
■ 【Python】Selenium에서 iframe의 내용을 조작한다
■ Chrome DevTools를 잘 사용하자! 웹 개발에 필수적인 브라우저 개발 툴에 의한 디버그의 기본
Reference
이 문제에 관하여(selenium 소기 (프록시/헤드리스)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryuichi1208/items/5d400f13a52fe28f4490텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)