Python
Selenium
python3
タイピングゲーム
タイピング

e-typingを自動化してハイスコアを叩き出す

はじめに

タイピングを練習してもなかなか速くならないのでSeleniumで自動化してハイスコア叩き出します。

実行環境

  • マシン:MacBook Pro (Retina, 13-inch, Mid 2014)
  • CPU:2.8 GHz Intel Core i5
  • メモリ:16 GB 1600 MHz DDR3
  • プログラミング言語:Python 3.6

プログラム

chromedriverを以下から最新版をダウンロード、解凍してプログラムと同じディレクトリに配置して下さい。
https://sites.google.com/a/chromium.org/chromedriver/downloads

main.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

url='https://www.e-typing.ne.jp/roma/check/'
driver = webdriver.Chrome(executable_path='chromedriver')
driver.get(url)

# 今すぐチェック!をクリック
driver.find_element_by_class_name('edro').click()

time.sleep(1)

# モーダルにスイッチ
driver.switch_to_frame('typing_content')

# スタートをクリック
driver.find_element_by_xpath('//div[@id="start_btn"]').click()

time.sleep(1)

# スペースキーでスタート
driver.find_element_by_tag_name("body").send_keys(Keys.SPACE)

time.sleep(4)

while True:
    try:
        sentences = driver.find_element_by_xpath('//div[@id="sentenceText"]').find_elements_by_tag_name('span')[1].text
        for sentence in sentences:
            driver.find_element_by_tag_name("body").send_keys(sentence)
        time.sleep(1)
    except:
        break

あまり速すぎるとスコアが-1になってしまうのでループの途中でtime.sleep()を入れています。

実行結果

ezgif-4-d20a92e5fc.gif

実行環境が低スペックのうえ、録画しながらスクリプトを実行したためあまり速度が出ていませんが、録画なしの場合スコア1000以上を叩き出すことができました。

スクリーンショット 2017-12-19 9.12.13.png