RiderとSelenium


https://www.selenium.dev/documentation/ja/getting_started/

####Chromeで動作させる

- Chromeをインストールする

##### Nugetからインストール

```
Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriver.ChromeDriver 
```

```cs
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var chrome = new ChromeDriver(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
            chrome.Url = "http://google.com/";
            //特定のURLを開いて待機する
            Console.ReadKey();
            chrome.Quit();
        }
    }
}
```

####Chrominumで動作させる

- Chromeをアンインストールする
- Chrominumをインストールする
- ChromeDriverをインストールする

ChromeをアンインストールしないとChrominumが立ち上がらないです。

##### Nugetからインストール

```
Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriver.ChromeDriver 
```

##### Chrominumとドライバをインストールする

```
$ sudo apt-get update

$ sudo apt-get install chromium-browser

$ sudo apt-get install chromium-chromedriver

$ chromium-browser --version

$ chromedriver --version

# 日本語フォントをインストールする
$ sudo apt-get install fonts-ipafont-gothic fonts-ipafont-mincho
```

[参考](http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_chromium_chromedriver/)

chromedriverのインストールされた場所を調べる

```
$ which chromium-browser
$ which chromedriver
```

chromedriverは/usr/bin/chromedriverにインストールされます。
C# ChromeDriver関数にパスを指定する。ここでは「/usr/bin/」を指定する

```
var driver = new ChromeDriver("/usr/bin/");
```

```cs
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;

namespace SeleniumConsoleApp
{
    class Program
    {
        static void _mkFireFox()
        {
            IWebDriver driver =new FirefoxDriver(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
            
            driver.Navigate().GoToUrl("https://www.google.com/?hl=ja");
            //特定のURLを開いて待機する
            Console.ReadKey();
            driver.Quit();
        }

        static void _mkChromnimu()
        {
            var driver = new ChromeDriver("/usr/bin/");
            driver.Navigate().GoToUrl("https://www.google.com/?hl=ja");
            //特定のURLを開いて待機する
            Console.ReadKey();
            driver.Quit();
        }

        static void Main(string[] args)
        {

            _mkFireFox();

            _mkChromnimu();
        }
    }
}
```

#### FireFoxで動作させる
- FireFoxをインストールする
- GeckoDriverをNugetからインストールする

##### Nugetからインストール

```
Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriver.GeckoDriver
```

上記のプログラムで動作します。


####ユーザープロファイルの保存指定する

| 引数 | 内容 |
|:-----------|------------|
| –user-data-dir       | ユーザープロファイルの保存先を指定        |
| –profile-directory	       | 使用するユーザープロファイルを指定        |
	
####引数を指定しない場合

**–user-data-dirを指定しない場合**

- プロファイルは一時ファイルとして作成され、Chrome終了後に廃棄されます。

**–profile-directoryを指定しない場合**

- ユーザープロファイルは–user-data-dirで指定したフォルダ内のデフォルトのプロファイル（通常はDefault）を使用します。

**指定したフォルダが存在しない場合**

- –user-data-dir、–profile-directoryに指定したフォルダが存在しない場合は、自動でフォルダが作成されます（Windows環境でのみ確認）ので、タイプミスに注意しましょう。


```cs
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace example
{
    class Program
    {
        static void Main(string[] args)
        {
            ChromeOptions options = new ChromeOptions();
            options.AddArgument("--user-data-dir=D:\\tmp\\User Data");
            options.AddArgument("--profile-directory=Profile1");
            options.AddArgument("--lang=en");
            String path = @"D:\tmp\driver\chromedriver_win32";    //フォルダを指定

            IWebDriver driver = new ChromeDriver(path, options);
            driver.Navigate().GoToUrl("chrome://version");
            Console.ReadKey();
            driver.Quit();
        }
    }
}
```

[参考](https://selenium-world.net/selenium-tips/3519/)

####プラウザを開いた後、非同期で待機状態にする
プラウザを開いた後、GTKアプリ側で処理をしたい場合は非同期で待機状態にします。
Selenium.Support.UIのWebDriverWaitを使います。

```
Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriver.ChromeDriver 
Install-Package Selenium.Support
```

```cs
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var chrome = new ChromeDriver(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
            chrome.Url = "http://google.com/";
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
        }
    }
}
```


https://gazee.net/develop/csharp-selenium-chrome-driver/

[Gtk3アプリ RiderとWebView](https://qiita.com/tana_/items/12c2e9b80def78e76203)に続く