Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【コピペでできるpython】seleniumを使ってe-typingを自動高速化してみた

f:id:yukiyukiponsu:20190523223557j:plain

 

こんにちは、ゆきとです。

 

現在、新人社員研修でタイピングの練習をe-typing(タイピング練習サイト)で行っているのですが、合格ラインのノルマ(スコア300)を達成できません。もうすでにタイピングの練習をしだしてから3週間ほど経過するというのに嘆かわしいことです。

 

そこで私は気づいてしまいました。あれ?自動化すればいいんじゃね?ということでタイピングを自動化してみました(笑)(なんの解決にもなってないとか言うんじゃないよ)

 

この記事では、すでにseleniumを使って開発したことがあるという前提で書いています。もしまだseleniumを使って開発したことがないよって方は、こちらの記事がわかりやすく説明してくださっているのでご覧ください。

selenium導入

 

上の記事を補足しつつざっとまとめると、Seleniumを使うには

pip install selenium

使うブラウザのバージョンを調べて、一つ古いバージョンのドライバーをインストール

(ブラウザを操作するには、各ブラウザに合わせてドライバーを用意する必要がある)

今回は Chrome を使用するので 公式サイトから ChromeDriver をダウンロード。

 

ソースコード内のexecutable_pathにChromeドライバーをダウンロードしたpathを記入

executable_path = ”ドライバーの実行ファイルを保存した場所”

 

以上です!

 

下に実行結果を載せておきます。

実行結果

youtu.be

 

こんな感じでe-typingを自動化できます。

 

前置きはここまでにしてソースコードの紹介です

環境

Mac (OS version 10.15.4)

python 3.7.6

ソースコード

from selenium import webdriver # Webブラウザを自動操作する(python -m pip install selenium)
from selenium.webdriver.chrome.options import Options # オプションを使うために必要
from time import sleep
from selenium.webdriver.common.keys import Keys
import selenium
import time
import sys

start = time.time() #処理時間の測定開始
# option = Options()                          # オプションを用意
# option.add_argument('--headless')           # ヘッドレスモードの設定を付与

# driver = webdriver.Chrome(options=option, executable_path='yourpath/chromedriver')   # Chromeを準備(optionでシークレットモードにしている)
driver = webdriver.Chrome(executable_path='yourpath/chromedriver')   # Chromeを準備(optionでシークレットモードにしている)

url = "https://www.e-typing.ne.jp/roma/variety/long.asp"
driver.get(url) #googleを開く

sleep(2)
print(driver.current_url)

check_btns = driver.find_elements_by_xpath("//a[@class='keybo']")
for check_btn in check_btns:
    check_btn.click()
    break

sleep(2)
print(driver.current_url)

try:
    #frameの切り替え
    driver.switch_to_frame('typing_content')
    print("Change iframe")
    driver.find_element_by_id('start_btn').click()
    print("click start_btn")
    sleep(2)

    #スペースキーを入力してスタートする
    body_element = driver.find_element_by_tag_name('body')
    body_element.send_keys(Keys.SPACE)
    time.sleep(3.5)

    #入力するテキストを習得
    # sentence = driver.find_element_by_xpath('//div[@id="sentenceText"]').text
    # print(sentence)
    sentence = driver.find_element_by_xpath('//div[@id="sentenceText"]').text
    print(sentence)
    #取得したテキストを1文字ずつ入力する
    for key in(sentence):
        body_element.send_keys(key)
        sleep(0.03)
        
except selenium.common.exceptions.NoSuchElementException:
    driver.quit()
    sys.exit()

# driver.quit()
# sys.exit()

 

大変面白いものが作れました。明日は何を作ろかにゃん。

 

今日の内容は以上です。

 

今日もブログを読んでくださりありがとうございます。

 

少しでも参考になれば幸いです。

 

それでは!