見出し画像

【C#】seleniumを使って自動売買ソフトを作ろう-2

【挨拶】

前回の記事にスキを押してくださった方ありがとうございます

今回は前回用意したプロジェクトを利用して、ブラウザを開くとこまでやっていきます

【起動の準備】

クロームのブラウザを開くにあたって、いくつか設定することがあります

基本的に記載してあるコピペでいいですが、設定を色々変えたい場合は調べて頂ければと思います

クロームの設定

var chromeOptions = new OpenQA.Selenium.Chrome.ChromeOptions();
chromeOptions.AddArgument("--disable-application-cache"); //終了時にキャッシュ削除
chromeOptions.AddArgument("--disable-extensions"); //デベロッパー機能を無効にするポップアップを非表示(これをしないと鬱陶しい)
chromeOptions.AddArgument("--start-maximized"); //最大画面サイズで開く(これはお好み)

ドライバーの設定

var chromeDriverService = OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService(@"ここにダウンロードしたchromedriver.exeのディレクトリパスを記述");
chromeDriverService.HideCommandPromptWindow = true; //こうすることで、起動時のプロンプトウインドウを非表示にできる

これで起動の準備は完了です。

やってることといえば、繰り返しテストを行う為に邪魔なキャッシュを残さないようにしているのと、起動時のプロンプト出さないとかですね。

ドライバーのディレクトリパスが間違っていれば、そこでエラーが出ると思います

【ブラウザ起動】

ここまでできれば、たった数行でブラウザを起動出来ちゃいます。お手軽ですね

var chromeDriver = new OpenQA.Selenium.Chrome.ChromeDriver(chromeDriverService, chromeOptions);
chromeDriver.Url = "https://www.google.co.jp/webhp?authuser=1";

一行目で、先ほど設定してあげた設定情報を渡し

二行目で開きたいURLを指定してあげています。これでF5キーを押してデバッグ無しで開始しちゃいましょう!

どうでしょうか?こんな感じになれば成功です

昔はなかったんですが、クローム上部にテストで動かしてますというメッセージが出てるのがseleniumで動かしてる特徴になるのではないでしょうか

ツールで動かしてる感が出てワクワクしますよね笑

【終わりの挨拶】

今回はここまで、次回はせっかくのC#なのでUIと連動させた動きを行いましょう。サンプルソースを下記に記載しておきます

FormClosingにイベントが追加されているのは、chromedriver.exeがプロセス終了しない可能性があり、その場合だと次回実行時にアクセスできずにエラーが起こる場合があるので、無理やりプロセスkillしてます

おまじないだと思ってくれれば幸いです

ではでは

【リンク】

前回の記事

次回の記事

便利クラス

【サンプルソース】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.TestAction();
            this.FormClosing += Form1_FormClosing;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("chromedriver");

                foreach (System.Diagnostics.Process p in ps)
                {
                    //プロセスを強制的に終了させる
                    p.Kill();
                }

            }
            catch { }
        }

        /// <summary>
        /// ブラウザの挙動テスト
        /// </summary>
        private void TestAction()
        {
            //クロームの設定の用意
            var chromeOptions = new OpenQA.Selenium.Chrome.ChromeOptions();
            chromeOptions.AddArgument("--disable-application-cache"); //終了時にキャッシュ削除
            chromeOptions.AddArgument("--disable-extensions"); //デベロッパー機能を無効にするポップアップを非表示(これをしないと鬱陶しい)
            chromeOptions.AddArgument("--start-maximized"); //最大画面サイズで開く(これはお好み)

            //chromeOptions.AddArgument(String.Format("--window-size={0},{1}",100, 100)); //大きさを指定する場合
            //chromeOptions.AddArgument(String.Format("--window-position={0},{1}", 10, 10)); //位置を指定する場合

            //ドライバーの割り当て用意
            var chromeDriverService = OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService(@"パス指定");
            chromeDriverService.HideCommandPromptWindow = true; //こうすることで、起動時のプロンプトウインドウを非表示にできる

            //ブラウザ起動
            var chromeDriver = new OpenQA.Selenium.Chrome.ChromeDriver(chromeDriverService, chromeOptions);
            chromeDriver.Url = "https://www.google.co.jp/webhp?authuser=1";

        }
    }
}

いいなと思ったら応援しよう!

Ryo Tsukuda
記事を読んでくださり、ありがとうございます 今後もお役に立てる記事を更新していく所存です よければサポートして頂けると嬉しいです 今後ともよろしくお願いいたします