MSforms의 자동 응답 스크립트를 통한 selenium 입문
소개
내가 사는 기숙사에서는 매일 아침 점호가 있었고, 코로나 소용돌이 때문에 3월경 점호가 MSforms로 바뀌었습니다.
매일 아침 일어나기→스마트폰 열기→teams 열기→forms 열기→매일 같은 답변을 보내는 작업이 억권...이라고 생각했기 때문에 이 스크립트를 만들려고 했습니다.
selenium에 대해 아무것도 몰라도 코드를 쓸 수 있게 되는 기사를 쓰면 좋다고 생각합니다.
※주의 이 기사에서 사용한 것은 MSforms입니다만 똑같이 코드를 쓰면 Google 폼에서도 이용할 수 있습니다.
환경
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 요소를 찾아 인스턴스를 생성하고 클릭하거나 입력합니다. 요소 찾기

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

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

화면 오른쪽에 표시된 요소의 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였다면 로그인 처리도 넣어 보면 좋을 것입니다.
기숙사의 점호로 사용한 프로그램이건 여러가지로 식별되는 것 같은 요소가 있어 무섭기 때문에 개요만으로 하는 때입니다. 를 사용하여 매일 배치 파일을 실행합니다. 제대로 전화를 받았는지를
Reference
이 문제에 관하여(MSforms의 자동 응답 스크립트를 통한 selenium 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/butsuli_shine/items/4f9ac78753a36d7ec9b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)