はじめに
- Selenium談話会について
- 2018/03/02 21:00〜 Slackで実施
- 最低半年に一度開催しています
- 今回はテーマは決めずに、各々が持っている悩み、相談したいことなどを持ち寄って議論する形式で進めました
議題と内容
① Windowsでは要素検索ができるがMacではできない
- 環境 : Windows 8.1 / Mac HighSiera(Safari)
- 製品を評価する上で両方のブラウザでのテストが必須
- テストをそれぞれ走らせるとWindowsは要素検索+クリックできるが、Macでは要素の検索で失敗している
- => Safariは敷居が高いかもしれないので、まずはChromeで試してみてうまく行けばSafariに挑むのが良いかもしれない
- Chromeが一番安定している
- => docker-seleniumを利用すると環境構築のハードルが下がるし、手っ取り早く作れる
② うまく動かない時のアプローチ(問題の切り分け)はどのようにしているのか?
- 待機処理をはさむ
- 要素取得ができないときなど解析に役立つことがある
- スクリーンショットを撮る
-
page.save_screenshot('ss.png')
のようなワンラーナー書くだけで状況が把握できる
-
- ログやエラーメッセージを読む
- Chromedriverはシステムプロパティに設定書くとverboseのログが吐ける
- ブラウザの中で何が起きているか見ると要素になぜ手が届かないか追えそう
- Wire protocolレベルでコマンドのやり取りをみる
- Chromedriverはシステムプロパティに設定書くとverboseのログが吐ける
③ Seleniumあるある 〜 こういうコケ方することあるよね >_< 〜
- デスクトップ環境だと動くのにXvfbな環境だけ転ける
- ブラウザがそもそも起動しない
- パス等の問題
- ブラウザは起きるけどTimeout
- ブラウザとdriverのバージョンが噛み合ってない
④ ページオブジェクトパターンでテスト設計するとき、ヘッダなどの共通部分はどう扱うのが良いのか?
- ページオブジェクトパターンの学習向け/提示用途で使えると思ってデモを書いてみた
- それぞれのページに書くと冗長なコードになるのでどう扱うか悩んでいる
- => 共通部分をクラスに切り出して、そのクラスのインスタンスをページオブジェクトのメンバーに持つのが良いのでは
⑤ MacでBASIC認証が突破できない
- => このQiita記事を参考にして突破した経験あります
- ちなみにWindowsでは認証画面が出たら手動でログインできたが、Macでは手動入力すると怒られた
- => Seleniumのprofileに設定すればうまくいくのではないか
- => Squidなどを使ってproxyを立てるというアプローチもありかも
⑥ ブラウザのセッションをprofileに残しておいてテストする度の認証を削減する
-
selenium webdriverで任意のchrome profileを作成し、ログイン情報などを記憶させる
- クッキーの保存期間にはログインは不要になる
- 他にも http://katsulog.tech/ に面白いブログ記事を書かれている
宣伝
- Selenium Conference 2019 Tokyoに関するアンケート のご協力よろしくお願いします