Windows 10

Selenium(C#)でEdgeをいろいろ操作してみた。

当ブログでも最近よく扱っているMicrosoft Edge、Seleniumからいろいろ操作してみました。

using System;
using System.Drawing.Imaging;
using System.Windows.Automation;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Support.Events;

namespace EdgeWebDriver
{
  class Program
  {
    public static void Main(string[] args)
    {
      const string folderName = "Microsoft Web Driver";
      string serverPath = System.IO.Path.Combine(
        System.Environment.GetFolderPath(
          System.Environment.SpecialFolder.ProgramFilesX86
        ), folderName
      );
      EventFiringWebDriver driver = new EventFiringWebDriver(new EdgeDriver(serverPath));
      driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
      //driver.Manage().Window.Maximize(); //OpenQA.Selenium.WebDriverException: Unexpected error. Unknown command received
      
      //maximize edge window
      driver.Navigate().GoToUrl("about:blank");
      AutomationElement root = AutomationElement.RootElement;
      AutomationElement edge = root.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "TitleBar"));
      if (edge != null) {
        AutomationElement maximize = edge.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "Maximize"));
        if (maximize != null) {
          if (maximize.Current.Name.Contains("最大化")) {
            InvokePattern ivk = (InvokePattern)maximize.GetCurrentPattern(InvokePattern.Pattern);
            ivk.Invoke();
          }
        }
      }
      
      WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
      driver.Navigated += new EventHandler<WebDriverNavigationEventArgs>(driver_Navigated);
      
      driver.Navigate().GoToUrl("http://deelay.me/3000/http://www.bing.com/search?q=windows10");
      wait.Until(x => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
      ((ITakesScreenshot)driver).GetScreenshot()
        .SaveAsFile(@"C:\Test\" + new Uri(driver.Url).Host + ".jpg", ImageFormat.Jpeg);
      Console.WriteLine("=== document complete ===");
      driver.Navigate().GoToUrl("http://deelay.me/3000/http://search.yahoo.co.jp/search?p=windows10");
      wait.Until(x => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
      ((ITakesScreenshot)driver).GetScreenshot()
        .SaveAsFile(@"C:\Test\" + new Uri(driver.Url).Host + ".jpg", ImageFormat.Jpeg);
      Console.WriteLine("=== document complete ===");
      
      driver.Quit();
    }
    
    private static void driver_Navigated(object sender, WebDriverNavigationEventArgs e)
    {
      Console.WriteLine("URL:" + e.Url);
    }
  }
}

Navigatedイベントでページ遷移を捕まえたり、GetScreenshotメソッドでスクリーンショットを撮ったり、基本的な動作を確認してみたのですが、IWindow.Maximizeメソッドを実行したところ、Unexpected errorが発生したので、仕方なくUI Automationを使うことにしました。

EdgeのWebDriver Statusを見る限り、現時点(2015/8/28)ではMaximize WindowがNot Yetになっているので、まだ実装されていないのかもしれません。同じように、SelectElementを使おうとした際にもエラーが発生したので、Edge用のWebDriverはまだまだ開発途上のようです。

ちなみに、ページの表示待ち処理は「load – Selenium wait until document is ready」を参考にしてみました。
(動作確認するためにDeelay.meを挟んでいます。)

Microsoft Edgeを起動するC#コード前のページ

[Windows 10]UWPアプリでWebViewコントロールを使ってみた。次のページ

関連記事

  1. Windows 10

    Microsoft Edgeのショートカットをデスクトップに作成する。

    最近のアクセスログを見ていると「Edge ショートカット デスクトップ…

  2. Windows関連

    Windows 8.1をインストールしてみました。

    下記の記事にもあるように、開発者向けにWindows 8.1の製品版(…

  3. Windows 10

    Windows 10 November 2019 UpdateをISO形式でダウンロードして実機にイ…

    下記記事にもあるように、11月12日(米国時間)にWindows 10…

  4. Windows 10

    AppUserModelId(AUMID)を列挙するVBScript

    「「ファイル名を指定して実行」からMicrosoft Edgeを起動す…

  5. Windows関連

    どのブラウザーが最強なのかを調べてみたよ。

    Internet Explorer、Chrome、Firefox…数あ…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP