ここから本文です
javaを中心にした技術メモ(備忘録)です。

書庫全体表示

seleniumメモ

■準備
  ○FireFoxをインストール
    ※SeleniumuIDEはFireFoxプラグインのため必須。
 
  ○SeleniumuIDEをインストール
    http://docs.seleniumhq.org/download/
   
  ○IEの設定のセキュリティですべてのゾーンで[保護モードを有効にする]をチェックします。
    ※最新版だと不要という噂も。。。又は下の保護モードの回避でいけるかも。
 
  ○Javaプロジェクト作成
    Selenium Client & WebDriveのJava版をダウンロードしてどこかに展開
 
    Eclipseで適当なプロジェクトを作成
          上記で展開したJARファイルをクラスパスに追加
         
    ※上の2つはmavenを使用すれば必要ないかも。
 
    <dependencies>
          <dependency>
                        <groupId>org.seleniumhq.selenium</groupId>
                        <artifactId>selenium-java</artifactId>
                        <version>2.44.0</version>
          </dependency>
    </dependencies>
     
    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.4</version>
          <scope>test</scope>
    </dependency>
 
  ○Seleniumuサーバのダウンロード(IEで実行時に使用・Jarファイル)
    Selenium Server (formerly the Selenium RC Server)
 
  ○IEドライバーのダウンロード(IEで実行時に使用・EXEファイル)
    The Internet Explorer Driver Serverのダウンロード
 
  ○IDE起動
    FireFoxのメニュー⇒開発ツール⇒SeleniumIDE
    ※メニューの左横にアイコンがあるかも。
 
■記録
  右の赤ボタンを押して記録開始。
  FireFoxでブラウザの操作を実施。
 
■IEで実行
  ○Seleniumuサーバを起動(記録はFireFoxでしかできない。)
 
  java -jar ./selenium-server-standalone-2.44.0.jar
    -Dwebdriver.ie.driver=../selenium-IEDriverServer_Win32_2.44.0/IEDriverServer.exe
    -Dwebdriver.chrome.driver=../selenium-chromedriver/chromedriver.exe
     
  ※IEとChromeの場合、システムのプロキシ設定を参照するため、そちらを手動で書き換えればよいです。
   Firefoxに関してはシステムのプロキシ設定を参照せず、独自の設定を持つため、プログラム上での設定が必要になります。
   -Dhttp.proxyHost=proxy.xxx.co.jp -Dhttp.proxyPort=8080 の指定も試したが駄目だった。
 
  ○設定のWebDriverタブで起動させるブラウザを設定
    ie/chrome
    ※デフォルト:firefox
 
  実行ボタン
 
■Eclipseで実行
  ○SeleniumIDEでTestケースでエクスポート
 
  ○上記で作成したJavaプロジェクトにソースを置く
 
  ○setUp() で設定しているドライバをIE用に変更
 
    @Before
    public void setUp() throws Exception {
 

          System.setProperty("webdriver.ie.driver",
                                      "C:/selenium-IEDriverServer_Win32_2.44.0/IEDriverServer.exe");
          driver = new InternetExplorerDriver();
          // driver = new FirefoxDriver();
          baseUrl = "http://www.yahoo.co.jp";
          driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
          driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);
    }
   
    ---
    ●Proxyを設定する場合
          String PROXY = "localhost:8080";
 
          org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy();
          proxy.setHttpProxy(PROXY)
               .setFtpProxy(PROXY)
               .setSslProxy(PROXY);
          DesiredCapabilities cap = new DesiredCapabilities();
          cap.setCapability(CapabilityType.PROXY, proxy);
 
          WebDriver driver = new InternetExplorerDriver(cap);// ★左記の引数で設定するのを忘れずに・・。
    ---
    ●保護モードなどの設定を回避
          DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
           capability.setCapability(
                         InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
                          true);
                          WebDriver webdriver = new InternetExplorerDriver(capability);
                          ※2.22以降は必要ないらしい・・。
                          ただ、INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS以外の設定もいろいろ使えるものはありあそう。
                          http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/ie/InternetExplorerDriver.html
                          ズーム無視とかもある。
    ---
 
■問題
  ○Win7+IE11でorg.openqa.selenium.WebDriverException: JavaScript error
    セキュリティバッチ(KB3025390)で動かない・・らしい。
    ⇒http://code.google.com/p/selenium/issues/detail?id=7135
   
  ○同じくWin7+IE11でUnable to get browser(Yahooで検索結果からリンクをクリックするタイミング)
    レジストリの設定でうごく
    http://miya-jan.hatenablog.com/entry/2014/04/22/232919
    32bit版Windowsの場合、
    "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE"
    というキーを新規で追加し、"iexplore.exe"という名前にDWORDで0の値を設定すれば大丈夫とのことです。
    64bit版の場合は、
    "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE"
 
  ○SeleniumIDEでcaptureEntirePageScreenshotを動かしたがうまく動かない・・。
  但し、Testケースでは、以下のような方法で実行可能
   
          TakesScreenshot takesScreenshot = (TakesScreenshot) driver;
          Path capture = Paths
                                      .get("./log/snapshot.png");
          Files.write(capture,
                                      takesScreenshot.getScreenshotAs(OutputType.BYTES));
  
  ○seleniumIDEで使用していたコマンド
    WebDriverCommandProcessorで実行できる。但しアサートなどはない。
 
■参考URL
  ○全国のSeleniumer必読
    http://qiita.com/oh_rusty_nail/items/b8ba525d31ea7c522856
 

この記事に

顔アイコン

顔アイコン・表示画像の選択

絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
  • 名前
  • パスワード
  • ブログ

本文はここまでですこのページの先頭へ
みんなの更新記事