こんにちは、うたかたです。
皆さんはe-typingというタイピング練習サイトを知っていますか?
私は高専の授業でタイピングの練習としてよく使ったし、このスコアを成績に入れるという講義もあったのでよく利用していました。
でも、なかなかタイピングが早くならなくてイライラしたので自動化してみました。
そんなわけで、今日はタイピング練習サイトの「e-typing」を自動化してみるプログラムを書いてみました。
実行環境
環境:Macbook pro
プログラミング言語:python3.7.3
ソースコード
from selenium import webdriver
import time
import pyautogui
from selenium.webdriver.common.keys import Keys
#e-typingをブラウザで開く
driver = webdriver.Chrome()
driver.get('https://www.e-typing.ne.jp/roma/variety/business.asp')
time.sleep(2)
#e-typingの「IT」のコースを選択する
IT_button = driver.find_element_by_xpath('//*[@id="main"]/article/nav/ul/li[10]/a')
IT_button.click()
time.sleep(2)
#開いたe-typingの画面にフォーカスを当てる
driver.switch_to_frame('typing_content')
start_button = driver.find_element_by_xpath('//*[@id="start_btn"]')
start_button.click()
time.sleep(2)
#スペースキーを入力してスタートする
body_element = driver.find_element_by_tag_name('body')
body_element.send_keys(Keys.SPACE)
time.sleep(3.5)
#ゲームが終わるまで繰り返す
while True:
try:
#入力するテキストを取得する
sentence = driver.find_element_by_xpath('//*[@id="sentenceText"]/div/span').text
#取得したテキストを1文字ずつ入力する
for key in(sentence):
body_element.send_keys(key)
time.sleep(1)
except:
break
ブラウザに対してリクエストを送るときは2秒間のスリープを挟むようにしています。
これは、画面が読み込まれていないとエラーが出てしまうという理由と、あまりに短期間にたくさんのリクエストを送ると、サーバーに負荷をかけてしまうことになるという理由でやっています。
スペースキーを押した後の3.5秒のスリープはスタートまでのカウントダウンの時間です。
あと、あまりに早くタイピングをさせるとスコアが-1になってしまうので1回ごとに1秒のスリープを挟んでいます。
実行結果
スコア
スコアは900~1000程度出せます