14
10

More than 5 years have passed since last update.

UnityのC#からSelenium経由でChromeをゴニョゴニョする

Last updated at Posted at 2018-04-04

はじめに

あるサイトのログインした状態のページをスクレイピングしたくてPythonからSelenium経由でChromeを触ってたけど、めんどくさくなってUnityから直接触れないか調べたら割りとカンタンにできました。

おそらくほぼ同じやり方でFirefoxも対応できると思います。

環境

  • OS:macOS Sierra (10.12.6)
  • Unity:2017.3.1f1
    • Scripting Runtime Version:Experimental(.NET 4.6 Equivalent)
  • Unityエディタ上とMacのスタンドアロンビルドで確認

Windows / Linux では未確認。

準備

Seleniumのダウンロードとセットアップ

  1. NuGetのページの「Manual Download」からSeleniumをダウンロード

    • 記事執筆時点の最新バージョンは3.11.0
  2. ダウンロードした「selenium.webdriver.x.xx.x.nupkg」の拡張子を「nupkg」から「zip」に変更して解凍

  3. 中にあるlib/net45/WebDriver.dllをUnityのPluginsフォルダ以下に入れる

ChromeDriverのダウンロードとセットアップ

  1. ここの「Latest Release: ChromeDriver x.xx」のリンクからダウンロード

    • 記事執筆時点の最新バージョンは2.37
  2. zipを解凍して出てきたchromedriverファイルをUnityのStreamingAssetsフォルダに入れる

That's it!

C#からChromeを起動する

あとはC#から好きなようにChromeを操作できる。

WebDriverTest.cs
using OpenQA.Selenium.Chrome;
using UnityEngine;

public class WebDriverTest : MonoBehaviour
{
    private ChromeDriver _driver;

    void Start()
    {
        var path = Application.streamingAssetsPath;

        // NOTE: 起動にはそこそこ時間がかかる
        _driver = new ChromeDriver(path);

        // 起動後は好きなようにChromeを操作できる
        _driver.Navigate().GoToUrl("http://yahoo.co.jp");
    }

    void OnDestroy()
    {
        _driver.Dispose();
    }
}

あとがき / TODO

  • StreamingAssetsフォルダを使わなくてもいいかも、要確認
  • Windows / Linux のスタンドアロンビルドでも動くか確認
    • 誰かチャレンジして結果を教えてください

参考

14
10
1

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
14
10