Helium을 사용한 브라우저 작업

개시하다


파이토존에서 브라우저 조작을 할 때 셀레니엄을 사용하는 경우도 많다.그땐 좀 더 쉽게 쓰면 안 된다는 생각은 안 했어요?헬릭스라는 셀레니움의 래치 라이브러리를 사용하면 그것을 실현할 수 있다.
실제로 여기서 세심한 말을 하지 않아도 공식 홈페이지염가 좌석에서 바로 사용할 수 있다.그러나 이 글은 블러셔표에 설명되지 않은 기능과 함수를 어느 정도 설명했다.
다음은 버전 3.0.7의 Helium을 토대로 기재한다.

Helium 피쳐

  • 셀레니움의 잠금 메모리로 작업할 때 셀레니움이 이용할 때보다 30~50%의 코드량으로 인코딩할 수 있다
  • Chrome 및 Firefox
  • 지원
  • 크롬 드라이브와 Geckodriver가 첨부되어 있으며 별도로 가져올 필요가 없음
  • 버튼과 같은 레이블을 지정하여 작동할 수 있으므로 읽을 수 있음
  • Selenium 호출 함수
  • 설정


    익숙한 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 웹요소 속성을 통해 Seleniumget_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 にログイン')
    

    참조 정보

  • PyPI
  • GitHub
  • 문서
  • 염가 좌석
  • 좋은 웹페이지 즐겨찾기