Helium을 사용한 브라우저 작업
개시하다
파이토존에서 브라우저 조작을 할 때 셀레니엄을 사용하는 경우도 많다.그땐 좀 더 쉽게 쓰면 안 된다는 생각은 안 했어요?헬릭스라는 셀레니움의 래치 라이브러리를 사용하면 그것을 실현할 수 있다.
실제로 여기서 세심한 말을 하지 않아도 공식 홈페이지염가 좌석에서 바로 사용할 수 있다.그러나 이 글은 블러셔표에 설명되지 않은 기능과 함수를 어느 정도 설명했다.
다음은 버전 3.0.7의 Helium을 토대로 기재한다.
Helium 피쳐
설정
익숙한 pip를 사용합니다.Selenium도 함께 설치됩니다.
pip install helium
Import
from helium import *
브라우저 시작 및 종료
기본적
WebDriver를 지정할 필요는 없습니다.
start_chrome()
start_firefox()
URL 지정 시작
start_chrome('google.com')
헤드 없는 모드로 시작
start_chrome(headless=True)
start_chrome('google.com', headless=True)
브라우저 끝내기
kill_browser()
페이지 마이그레이션
브라우저가 시작된 후 다른 페이지로 변환하려면
go_to()
를 사용합니다.refresh()
도 현재 페이지를 새로 고칠 수 있습니다.go_to('google.com')
요소 클릭
기본적
아래와 같이 표시된 이름을 매개 변수
click()
로 지정하면 됩니다.또한 rightclick()
에서 우클릭하면 doubleclick()
를 통해 더블 클릭할 수 있다.click('Sign in')
클릭 대상을 아래와 같이 요소명을 붙여서 지정할 수도 있다.click(Link('Sign in'))
'링크'외에도'버튼','텍스트필드','체크박스','라디오버턴','이미지','텍스트'등이 준비됐다.마우스 커서 정렬
hover('Sign in')
좌표를 클릭합니다.
click(Point(100,100))
드래그 앤 드롭
drag()
드래그 가능.드래그 앤 드롭 대상을 to 매개변수로 지정합니다.drag("ABC", to=TextField('住所'))
파일을 드래그 앤 드롭할 수도 있습니다.drag_file(r"C:\work\sample.txt", to="ここにドロップ")
굴러다니다
scroll_up()
, scroll_down()
, scroll_right()
, scroll_left()
는 각각 위아래로 스크롤할 수 있다.기본적으로 100픽셀 단위로 스크롤됩니다.또한 스크롤 크기를 픽셀 단위로 지정할 수도 있습니다:.scroll_down(500)
Selenium 함수 호출
Helium은 Selenium의 모든 기능을 포괄하는 것은 아니지만, Selenium의 함수를 다음과 같이 호출할 수 있다.
driver = start_chrome('google.com')
driver.set_window_position(0, 0)
획득치
기본적
아래와 같이 간단하게 얻을 수 있다.
print(TextField('住所').value)
당연히 셀레니움이 준비한 수법도 쓸 수 있다.print(driver.find_element_by_name('address').text)
요소의 존재 확인
if TextField('住所').exists():
print(TextField('住所').value)
특정 요소 옆의 요소 지정
예를 들어, 값을 얻으려는 요소에 적절한 텍스트 표시가 없는 경우 다음 기능을 사용할 수 있습니다.'abve''to right of''below''to left of'를 준비했다.
Text(to_right_of='Name:', below=Image(alt='Profile picture')).value
속성 획득
다음 예는 "Helium"링크의 클래스 이름입니다.Helium 웹요소 속성을 통해 Selenium
get_attribute()
을 호출합니다.Link('Helium').web_element.get_attribute('class')
모든 요소 가져오기
모든 요소를 얻으려면
find_all()
를 사용합니다.이때 상기 속성의 지정 방법을 사용하거나 Helium이 준비한 S 술어를 사용하여 지정할 수 있다.S술어에서도 JQuery 선택기를 지정하여 #id 이름.class 이름 등을 추출할 수 있습니다."@name 이름"을 사용하여name 속성을 지정할 수 있습니다.email_cells = find_all(S("table > tr > td", below="Email"))
대기 표시
디스플레이에 시간이 필요한 페이지에서
wait_until()
대기 대상 요소의 디스플레이를 사용할 수 있습니다.wait_until(Button('ダウンロード').exists)
내부 규격은 10초를 기다린 뒤 미완성이 표시될 때 0.5초 간격으로 반복해서 검사하는 것이다.이 대기 시간과 구간을 맞춤형으로 설정할 수도 있다.다음 예는 30초 동안 기다린 다음 5초 간격으로 검사를 반복합니다.사용하지 않을 경우
wait_until(Button('ダウンロード').exists, 30, 5)
wait_until()
의 대기 시간 기본값은 10초입니다.다음 설정을 통해 기본 대기 시간을 변경할 수 있습니다.0을 설정하면 Helium 표시 대기 기능 대신 Seleniumimplicitly_wait()
을 사용합니다.Config.implicit_wait_secs = 30
값 설정
기본적
write('password', into='パスワード')
파일 업로드
attach_file(r'c:\test.txt', to='ファイル名')
콤보 상자 선택
select('都道府県', '東京都')
지정 키 입력
press()
에 지정된 키를 입력할 수 있습니다.대소문자를 구분하다.press('A')
문자 이외의 키도 입력할 수 있습니다.키 이름은 Selenium과 같지만 "Keys"를 지정할 필요는 없습니다.press(ENTER)
동시에 압력을 지원한다.press(CONTROL + 'a')
다른 창으로 전환
다른 창으로 전환할 때 사용합니다
switch_to()
.switch_to("Google")
해당 창이 여러 개 있는 경우 find_all()
에서 해당 창을 모두 찾아 목록의 요소 번호로 액세스합니다.다음은 모든 창을 가져오고 첫 번째 요소 창으로 전환하는 것입니다.switch_to(find_all(Window())[0])
샘플 인코딩
다음은 Qita에 로그인한 샘플입니다.
매우 직관적인 인코딩이 가능하다.
from helium import *
from getpass import getpass
username = input('User Name : ')
password = getpass('Password : ')
start_chrome('https://qiita.com/')
click('ログイン')
write(username, into='ユーザー名 または メールアドレス')
write(password, into='パスワード')
click('Qiita にログイン')
참조 정보
Reference
이 문제에 관하여(Helium을 사용한 브라우저 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nakaie/articles/3ab2c36dcc12cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)