MSforms의 자동 응답 스크립트를 통한 selenium 입문

소개



내가 사는 기숙사에서는 매일 아침 점호가 있었고, 코로나 소용돌이 때문에 3월경 점호가 MSforms로 바뀌었습니다.
매일 아침 일어나기→스마트폰 열기→teams 열기→forms 열기→매일 같은 답변을 보내는 작업이 억권...이라고 생각했기 때문에 이 스크립트를 만들려고 했습니다.
selenium에 대해 아무것도 몰라도 코드를 쓸 수 있게 되는 기사를 쓰면 좋다고 생각합니다.
※주의 이 기사에서 사용한 것은 MSforms입니다만 똑같이 코드를 쓰면 Google 폼에서도 이용할 수 있습니다.

환경


  • Windows10
  • Python 3.7

  • selenium이란?



    selenium은 웹 브라우저를 자동으로 움직이는 프레임 워크입니다.
    selenium 빠른 참조
    이 근처를 참고해 주시면 좋겠다고 생각합니다.

    라이브러리 설치



    selenium 드라이버를 이동하는 라이브러리를 설치합니다.
    pip install selenium
    

    드라이버 설치



    이쪽을 참고로 해 주시면 좋겠습니다.
    【selenium】Firefox/Chrome/Safari의 WebDriver 설치 - Python 편 -

    코드 작성 필요한 라이브러리 가져오기 from selenium import webdriver 브라우저 열기 이번에는 Chrome에서 작동합니다. driver_path='드라이버 경로' driver = webdriver.Chrome (executable_path=driver_path) 드라이버를 pip와 같은 계층에 두고 있는 경우 경로의 지정은 필요하지 않습니다. 소스 파일 아래에 두는 경우 등은 상대 경로로 지정합시다. 이제 브라우저가 마음대로 열립니다. 지정된 URL로 날아가기 url = 'https://www.google.com' driver.get(url) 이제 Google의 첫 화면으로 날아갑니다. selenium에서 브라우저 조작 그런데 여기에서 본제에 들어갑니다. selenium은 브라우저의 HTML 요소를 찾아 인스턴스를 생성하고 클릭하거나 입력합니다. 요소 찾기
  • Chrome에서 조작하려는 페이지를 마우스 오른쪽 버튼으로 클릭하여 확인으로 이동합니다.

  • 왼쪽 상단의 마크를 클릭합니다.


  • 찾으려는 요소로 커서를 이동하고 왼쪽 클릭합니다.


  • 화면 오른쪽에 표시된 요소의 id, class, xpath 얻기


  • 이제 요소를 지정할 수 있습니다.

    위에서 얻은 id, class, xpath를 다음 함수에 전달합니다.
    # xpathで探す
    element = driver.find_element_by_xpath()
    # idで探す
    element = driver.find_element_by_id()
    # classで探す
    element = driver.find_element_by_class_name()
    

    요소를 찾은 후
    
    # クリックする
    element.click()
    # 入力する
    text = 'qiita'
    element.send_keys(text)
    # 入力されてる文字列を削除
    element.clear()
    

    지금까지 요약



    아래 코드로 Chrome에서 Google을 열고 검색을 할 수 있습니다!
    from selenium import webdriver
    driver_path = 'ドライバのパス'
    driver = webdriver.Chrome(executable_path=driver_path)
    url = 'https://www.google.com'
    driver.get(url)
    
    element = driver.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input')
    element.send_keys('qiita')
    
    element = driver.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[3]/center/input[1]')
    element.click()
    driver.close()
    

    MSforms에 자동 답변 드디어 여기까지 왔습니다. qiita 기사를 위해 MSforms를 만들었습니다. Test


    이것에 자동 대답 해 봅시다.
    from selenium import webdriver
    import time
    
    driver_path = 'E:\\qiita\\driver\\chromedriver.exe'
    driver = webdriver.Chrome(executable_path=driver_path)
    url = 'https://forms.office.com/Pages/ResponsePage.aspx?id=XYP-cpVeEkWK4KezivJfyLNSaEPu2-FCsEMGpQQlAA9UMDVQSjgyWUoyOUQzQVhEQTc5QzJDSFJCSy4u'
    driver.get(url)
    # ウィンドウを最大化する。
    driver.maximize_window()
    # ページが表示されるまつ
    time.sleep(10)
    # 好きなアーティストはいるかいないか(いる)
    element = driver.find_element_by_xpath(
        '//*[@id="form-container"]/div/div/div/div/div[2]/div[2]/div[1]/div/div[2]/div/div[1]/div/label/input')
    element.click()
    
    # 好きな食べ物(パンティ)
    favorite_food = 'パンティ'
    element = driver.find_element_by_xpath(
        '//*[@id="form-container"]/div/div/div/div/div[2]/div[2]/div[2]/div/div[2]/div/div/input')
    element.send_keys(favorite_food)
    
    # 年齢(10才)
    # まず逆三角形をクリックして選択肢を出す
    element = driver.find_element_by_xpath('//*[@id="Select_0"]/div/i')
    element.click()
    # 10才を選択する
    element = driver.find_element_by_xpath('//*[@id="Select_0"]/ul/li[1]')
    element.click()
    
    # 最後に送信ボタンを押す
    element = driver.find_element_by_class_name('button-content')
    element.click()
    sleep(3)
    
    # ウィンドウを閉じる
    driver.close()
    
    

    동작 확인용

    피 c. 라고 r. m/VXvb6CSGPh — 코프 (@butsuli_shine) September 4, 2020


    이것으로 완성이군요!

    만약 로그인이 필요한 forms였다면 로그인 처리도 넣어 보면 좋을 것입니다.

    기숙사의 점호로 사용한 프로그램이건 여러가지로 식별되는 것 같은 요소가 있어 무섭기 때문에 개요만으로 하는 때입니다. 를 사용하여 매일 배치 파일을 실행합니다. 제대로 전화를 받았는지를

    좋은 웹페이지 즐겨찾기