ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

ブラウザ自動テストを聞いてきた

12月3日JJUG CCC 2016 Fallに行ってきて


selenideを試行錯誤しながら実践するブラウザ自動テスト


を聞いてきたのでメモメモ


・自己紹介
Selenide
Selenium WebDriverを使いやすくラップしたフレームワーク
 Codeborne社がつくっている エストニア共和国

Selenium Web Driverとの比較
ページの表示
 コードに対して違いはなさそうだが・・・
 ブラウザをChromeからFirefoxに変える場合
  →WebDriverはコードを変える必要がある
   Selnideはシステムプロパティでブラウザを設定
 主な設定項目
  ブラウザ
  ウィンドウサイズ
  最大化するか
  ベースURL
  りもーとどらいばのURL

フォームコントロール
 selenideは$をつかう

アサーション
 selenideは$をつかう(統合されている)

Ajaxのアサーション
 WebDriver
  ループさせる
  FluentWait
 selenideは$をつかう(リトライ処理をしてくれる)

SelenideElement
・メソッドの戻り値とか

脱線:Dynamic Proxy
 代表的な利用シーン:AOP、ラッパー
 ただし、静的な継承関係が見えなくなる

スクリーンショット
 WebDriver
  パスを指定とか、いろいろ
 selenideはscreenshot("ファイル名")
   HTMLも取ってくれる

ラジオボタン

その他の比較はGitHubへ
 (この資料は公開します)

ページオブジェクトパターン
・式を入れたら、答えを表示する
 大量のlookupは修正が大変
・ページオブジェクトパターンでは、
 修正するところが限られる
・ページオブジェクトパターンの定義
  内部状態を露出してはならない
  メソッドでページに対する操作を提供
  :
  :
・ゆるいかんじでやってます・・・
・ページオブジェクト支援機能
・独自クラスの作り方
 ElementsContainerをExtendsするだけ
 インジェクションを入れ子にできる

デモ

headlessで動かすには
PhantomJSDriverなどもあるが、Dockerつかうのがよさそう
SeleniumがDockerイメージを提供

デモ

困っていること
・IE
 解決策ない
 たまに予期せぬエラーで落ちる