1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Seleniumを使ってe-typingを自動化した ②実装編

Posted at

##はじめに
前回の記事でselenium準備編を書いたので、ブラウザを動かすコードを書いていきます!

##実装

以下実装したコードになります。

e-typing.js
const {Builder, By, Key, until} = require('selenium-webdriver');
const tesseract = require('tesseract.js');
let fs = require('fs');

async function example() {
    // Chrome / Chromiumセッションをインスタンス化
    let driver = await new Builder().forBrowser('chrome').build();

    // e-typingのWebサイトを開く
    await driver.get('https://www.e-typing.ne.jp/roma/check/');

    // e-typingサイトの「今すぐチェック」というボタン要素をidから取得してclickする
    await driver.findElement(By.id('level_check_btn')).click();
    // 表示に時間がかかる為、5秒スリープさせる
    await driver.sleep(5000);

    //iframeが表示される為、iframeの要素をidから取得
    const iframe = await driver.findElement(By.id('typing_content'));
    //取得したiframeの要素をへ移動する (これがないとiframe内の要素にアクセスできない)
    await driver.switchTo().frame(iframe);

    // 「スタート」ボタン要素をidから取得して、クリック
    await driver.findElement(By.css('#start_btn')).click();
    // 表示に時間がかかる為、3秒間スリープさせる
    await driver.sleep(3000);

    // スペースキーをクリックするとゲームが開始される為、スペースキーをクリック
    await driver.actions().keyDown(Key.SPACE).perform();
     // 表示に時間がかかる為、3秒間スリープさせる
    await driver.sleep(3000);

    while (true) {
        try {
            // 画面に表示されている英字を取得する
            const sentenceText = await driver.findElement(By.id('sentenceText')).getText();
            // 取得した文字を一文字づつループさせる
            for (i = 0; i < sentenceText.length; i++) {
                word = sentenceText[i].toLowerCase();
                // 取得した文字のキーを押す
                await driver.actions().keyDown(word).perform();
                // キーを打つ速度を遅くする処理 (無くても動く)
                await driver.sleep(50);
            }
        } catch (error) {
            // 「sentenceText」というidを持った要素が取得できない場合エラーが発生して、処理終了
            console.log(error);
            return;
        }
    }
};

example();

nodeで動きます!

$ node e-typing.js

##まとめ
コードを書いて自動化するのは、すごく好奇心をくすぐられる。もっと色々と自動化できるもの探して行くつもりです!
実務の中でテストに利用して、テストの時間を短縮できたらめちゃ便利だなと思いました:smiley:
※動画を載せれたら載せます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?