Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSS Gateワークショップ 2016-09-24: yamadienne: selenium: 作業ログ #128

Closed
yamadienne opened this issue Sep 24, 2016 · 26 comments
Closed

Comments

@yamadienne
Copy link

OSS Gate へようこそ。

OSS Gateワークショップでは一人ずつ issue を作り、そこに作業ログを残しながら進めます。
過去のビギナーのものはこちらで見られます。 https://github.com/oss-gate/workshop/issues?q=is%3Aissue+is%3Aclosed

この issue 作成時点でまずやること

  • この issue のタイトルを「OSS Gateワークショップ ${YEAR}-${MONTH}-${DAY}: ${アカウント名}: ${OSS名}: 作業ログ」の形式でつけてください
  • OSS 名が未定の場合はタイトルは後からでも変えられるので、とりあえず未定などでも OK です

作業ログを書くタイミング

作業ログを書くタイミングは次のタイミングです。

  • 違う作業を始めたとき(インストールを始めた、動作確認を始めた、テストを始めた、とか)
  • 詰まったとき(インストール時にエラーがでた、ビルドが失敗した、とか)
  • issueを出したとき
  • pull requestを出したとき

作業ログに書く内容

作業ログに残すことは次のことです。「備考」以外は作業の邪魔にならないように一言でよいです。備考は作業に役立つので必要な分だけ書いてください。

  • 作業(やること、やっていること、やったこと。)
  • 思っていること(そのときどう思っているか。)
  • 備考(必要な付加情報。)

ログはコメントとして追記していってください。テンプレートは次の通りです。

* 作業:(ここにやること、やっていること、やったことを書く)
* 思っていること:(今どう思っているかを書く)

備考:(必要なら必要なだけ書く。必要ないなら書かなくてもよい。)

例1(備考なし):

* 作業:インストールを始めた
* 思っていること:ドキュメント通りに進めれば大丈夫だろう

例2:

* 作業:インストールが失敗した
* 思っていること:ドキュメントに手順が足りない?

備考:エラーメッセージは次の通り

```text
XXX is not found
```

必要なファイルが足りないのかなぁ。

ふりかえり

作業ログは、ビギナーが、このワークショップを通して得るものをより増やすために重要になります。なぜなら作業ログがメンターからのフィードバックをより充実させるからです。

作業ログを元にメンターと「ふりかえり」をするタイミングがあります。「ふりかえり」では次のことをします。

  • ビギナーは作業ログの内容を順にメンターに説明する。
  • メンターは説明を聞いてビギナーにフィードバックをする。

メンターは次のようなフィードバックをします。これは、ビギナーとは違う視点からビギナーの行動を観察することおよびメンターの経験があるからできることです。(「ふりかえり」の前にこんなフィードバックをよろしくお願いします!とお願いすると効果が高まるので実践してみましょう。)

  • ビギナーが気づかずにやっていたよい行動に気づくきかっけを与え、今後もその行動を継続するように促します。
  • ビギナーが困っていることについて、解決策を一緒に考えてくれます。
  • 適切な質問をしてビギナーが整理できていない行動や考えを整理してくれます。
  • ビギナーが「問題」だと認識していないこと(「問題発見」は難しい!)をメンターの視点から「問題」だと見つけてくれます。「問題」がはっきりしたら直しましょう。
  • ビギナーが次にどの方向に進めばよいかを整理してくれます。

このように、ビギナーの作業をメンター視点で一緒に整理し、ビギナーの今後の行動に活かす活動がここでいう「ふりかえり」です。そのため、「ビギナーにとって」ログに残すべきかどうか、という視点ではなく、「とりあえずログに残す」という視点でログを残してください。これは、ビギナーが重要だと判断しなくてもメンターの視点から見たら大事なこともあるからです。

@yamadienne
Copy link
Author

  • 作業: seleniumのインストール
  • 思っていること:まずはgoogleで検索する

@yamadienne
Copy link
Author

  • 作業: seleniumのインストール前に、ドキュメントの確認
  • 思っていること:公式サイトにいけばドキュメントが見つかる?

@yamadienne
Copy link
Author

  • 思っていること:
    まずどこをみていいかがわからない

Seleniumにはいくつかバージョンがあり、
IDE(ブラウザ上で動作するもの)
Selenium 1 (Selenium RC)
→ いまは未サポート
Selenium 2 (Selenium WebDriver)
→ こっちに統合

Webdriverはいくつかの言語をサポートしている
→ ruby版をいれてみる

http://www.seleniumhq.org/projects/webdriver/

@yamadienne
Copy link
Author

@yamadienne
Copy link
Author

yamadienne commented Sep 24, 2016

  • 作業:ruby版インストール完了。ドキュメントも一緒に入ってきたので確認する
  • 思っていること:riってどうやってみたっけ、、
$ gem install selenium-webdriver
Successfully installed selenium-webdriver-2.53.4
Parsing documentation for selenium-webdriver-2.53.4
Installing ri documentation for selenium-webdriver-2.53.4
Done installing documentation for selenium-webdriver after 5 seconds
1 gem installed

@yamadienne
Copy link
Author

rdocは
gem serverでみれる模様

http://0.0.0.0:8808/doc_root/selenium-webdriver-2.53.4/

  • 思っていること
    数が多いなあ、サンプルコードがないか

@yamadienne
Copy link
Author

@yamadienne
Copy link
Author

ハイライトのテスト

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"

element = driver.find_element :name => "q"
element.send_keys "Cheese!"
element.submit

puts "Page title is #{driver.title}"

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" }

puts "Page title is #{driver.title}"
driver.quit

@yamadienne
Copy link
Author

  • 作業:動かす前にコードを読んでみる(動作を理解する)

@yamadienne
Copy link
Author

yamadienne commented Sep 24, 2016

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox # ここでブラウザ指定?ほかのブラウザはどうやって指定するんだろう?
driver.get "http://google.com" # アクセス先?

element = driver.find_element :name => "q" # q要素を検索 (qってなんだ?)
element.send_keys "Cheese!"  # 検索ワードに文字列をいれている?
element.submit

puts "Page title is #{driver.title}" # なにが出力されるか?

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" } # "titleにcheese"が現れるまで待機?

puts "Page title is #{driver.title}"
driver.quit

@yamadienne
Copy link
Author

yamadienne commented Sep 24, 2016

  • 期待:上記のコードが動き、googleページがfirefoxで表示されること
  • 結果:firefoxが立ち上がるが、その後なにも表示されない
    しばらすると、以下のメッセージ
$ ruby sample.rb 
/Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:90:in `connect_until_stable': unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:55:in `block in launch'
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/socket_lock.rb:43:in `locked'
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:51:in `launch'
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/bridge.rb:43:in `initialize'
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `new'
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `for'
    from /Users/tanasinn/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for'
    from sample.rb:4:in `<main>'

環境:
OS: Mac OS X 10.9.3
ブラウザ:Firefox 49.0

@yamadienne
Copy link
Author

  • 作業:上のエラーメッセージを読んでみる
  • 思っていること:methodのうごきはさっきのrdocで確認してみよう

@yamadienne
Copy link
Author

  • エラーメッセージ:firefoxで60秒以内に安定した接続ができなかった
  • 思っていること:安定した接続(stable firefox connection)ってなんだ?!

@yamadienne
Copy link
Author

yamadienne commented Sep 24, 2016

  • 期待値:rdocでドキュメントが表示
  • Selenium::WebDriver::Error::WebDriverErrorのページのvalidateをクリックすると
Sorry! This document cannot be checked.
Sorry, the IP address 0.0.0.0 is not public. For security reasons, validating resources located at non-public IP addresses has been disabled in this service.

と表示

環境:Mac OS X 10.9.3
ブラウザ: Chrome バージョン 53.0.2785.116 (64-bit)

@yamadienne
Copy link
Author

  • 期待値:Selenium::WebDriver::Error::WebDriverError について
         エラーの内容について説明か、なにかヒントが記載されている
  • 結果:ページがあるのみ
  • 思っていること:そういうものなのか??該当箇所のソースコードを直接みてみる

@yamadienne
Copy link
Author

  • 作業:エラーが発生している箇所のソースコードを直接確認する
  • 思っていること:読めるのか??

@yamadienne
Copy link
Author

  • 作業:エラー内容をgoogleで検索する(ほかに同様の症状の人がいないか)
  • 思っていること: メンターさんからのアドバイスで作業変更

@yamadienne
Copy link
Author

yamadienne commented Sep 24, 2016

gem selenium-webdriverでRspecがコケた時の対処法
http://qiita.com/tatsuyard/items/873ce404fecc276ef05c

https://github.com/seleniumhq/selenium/issues/835

→ FirefoxとSeleniumのバージョン違いで動かないことがある模様
→ firefox 47.1 とselenium-webdriver-2.53.4 で動作実績があるので、
firefox を49.0->47.1にかえてみる

@yamadienne
Copy link
Author

@yamadienne
Copy link
Author

yamadienne commented Sep 24, 2016

  • Selenium を動かすための選択肢をあげる(メンターさんアドバイス)
    • Firefoxのバージョンをさげる
    • Seleniumのバージョンを下げる
    • 問題箇所のソースを修正する
    • ブラウザを変えてみる
    • OSを変えてみる

@yamadienne
Copy link
Author

  • ミニフィードバック
    • 既に上がっているissueに、現版数でも発生していることを報告する
        開発者はissueをあげて貰えると嬉しい(開発者は気づかない問題に気づけるため)
      ただし、既存のissueに上がっていないかは要チェックすべき

@yamadienne
Copy link
Author

  • 方針
    1. 問題の解決手順を探し、報告する
    2. (1.がダメな場合) 版数の組み合わせ情報をドキュメントの補足情報に追加してもらうことを提案する

まずは1.を30分ほど調査。だめそうなら2.に切り替える

@yamadienne
Copy link
Author

報告内容

以下のバージョンの組み合わせで、
以下のサンプルコード実行時に以下のエラーが発生する。
これは最新のFirefox(2016/9/24時点で49.0)が対応していないことが原因。

回避策をhttp://www.seleniumhq.org/docs/03_webdriver.jsp#firefox-driver
に記載してほしい

  • Firefoxのダウングレード(Firefox ESR45)にする
    • 実行環境
      • selenium-webdriver 2.53.4 (ruby)
      • Firefox 49.0
      • ruby 2.2.2p95
    • エラー内容
$ ruby sample.rb 
/Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:90:in `connect_until_stable': unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:55:in `block in launch'
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/socket_lock.rb:43:in `locked'
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/launcher.rb:51:in `launch'
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/firefox/bridge.rb:43:in `initialize'
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `new'
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:53:in `for'
    from /Users/username/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for'
    from sample.rb:4:in `<main>'
  • サンプルコード
require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get "http://google.com"

element = driver.find_element :name => "q"
element.send_keys "Cheese!"
element.submit

puts "Page title is #{driver.title}"

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.title.downcase.start_with? "cheese!" }

puts "Page title is #{driver.title}
driver.quit

@yamadienne
Copy link
Author

メンターさんアドバイスによって、少し修正

  • つまづいた点:注意事項に記載してほしい文面をうまく起こせない
  • アドバイス:文面自体を起こすのでなく、同じ症状でつまづく人が多いから、注意事項に起こしてほしい要求を出すだけでもよい

報告内容

私も以下の環境で同様の事象を確認しています。

  • 実行環境
    • selenium-webdriver 2.53.4 (ruby)
    • Firefox 49.0
    • ruby 2.2.2p95

私もSeleniumHQ/selenium#2559 (comment)
の通り、Firefox ESR45を使い、解決しました。

同じ症状の方が多くいるようですので、
Firefox ESR45を使うことを
http://www.seleniumhq.org/docs/03_webdriver.jsp#firefox-driver
などのドキュメントに注意事項として記載するのはどうでしょうか?

英語版

I have also confirmed the same issue.

  • selenium-webdriver 2.53.4 (ruby)
  • Firefox 49.0
  • ruby 2.2.2p95

I solved this issue using Firefox ESR45
SeleniumHQ/selenium#2559 (comment)

There seem to be many users who have the same issue.
How about writing to use Firefox ESR45 in documents,
which are like

@yamadienne
Copy link
Author

メモ

  • ドキュメントのページもgithubで管理されている場合が多い
  • issueの出す場所に困った場合、
     あたりをつけて、そこのissueをみて、動きがあるかを確認し、
     適切な箇所か確認する
     (場所によってはissueを出すべきでないところや、見てもらえないところがある)

@yamadienne
Copy link
Author

  • アドバイス: 修正したい内容と、どこを直せばよいか聞く形でもよい

Firefox Driver 使用上の注意事項の加筆箇所

SeleniumHQ/selenium#2559 (comment)
にもある通り、最新版のFirefox (恐らく48以降)では、Seleniumに対応していない

同じ問題を抱える方が多くいるようなので、
注意事項をドキュメントに追加したいが、
どこに追加するのが適切か?

以下に追加するのがよいか
https://github.com/SeleniumHQ/www.seleniumhq.org/blob/master/src/main/rst/03_webdriver.rst

@tdtds tdtds closed this as completed Nov 25, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants