「第５回Selenium談話会 in Slack」 のまとめ

# Selenium談話会 in Slackとは
* 私、@oh_rusty_nail が主催しているSlackを使ったオンライン勉強会です
 * https://seleniumjp.slack.com
 * 地方に住んでいて勉強会に行くのも遠征しないときびしい！といった方には特におすすめです
* 月１回程度の頻度で計画しています
* [日本Seleniumユーザーコミュニティ](https://groups.google.com/forum/#!forum/seleniumjp)で開催の案内を出しています
* ラフな感じでやってますのでお気軽にご参加ください！
 * ![チャットの様子](https://08275154297963728543.googlegroups.com/attach/4236d4fdf8cf405b/slack.png?part=0.1&view=1&vt=ANaJVrFYAk2sse1_p9dtcEakDE4AiQVeKYJHN0S6NzBO4jleAUmzhx1DafHjNU9fGtgGP2wt7F9M_mN73a0ekmpwLYwZNI332m1wJVcNyHWkr56kXGIjnaA)
* 情報を共有し合ったり、流行のツールについてしゃべったり、困りごとや相談をしたり...etc
* 2015/09/02現在の登録ユーザ数：70名

# 参加方法
* https://seleniumjp.herokuapp.com から登録してください

# 前回のまとめ
* [「第１回Selenium談話会 in Slack」 のまとめ](http://qiita.com/oh_rusty_nail/items/21e0014c40853571c87b) 【2015/04/22(Wed) 21:00～】
* [「第２回Selenium談話会 in Slack」 のまとめ](http://qiita.com/oh_rusty_nail/items/ccf40fe2d3381ad0ce4f) 【2015/05/13(Wed) 21:00～】
* [「第３回Selenium談話会 in Slack」 のまとめ](http://qiita.com/oh_rusty_nail/items/6efffcb71818914f776e) 【2015/06/16(Tue) 21:00～】
* [「第４回Selenium談話会 in Slack」 のまとめ](http://qiita.com/oh_rusty_nail/items/444e872c731e700ea0dc) 【2015/07/29(Wed) 21:00～】

# 「第５回Selenium談話会 in Slack」の議事録
* 日時
 * 2015/09/02(Wed) 21:00～
* 開催案内
 * http://selenium-danwakai.connpass.com/event/19427/
 * 以前は[日本Seleniumユーザーコミュニティ](https://groups.google.com/forum/#!topic/seleniumjp/4D1Nasdo5Xw)のみに案内を出していました
 * メンバの方々からより多くの人に見てもらえるのではないかという意見をいただき、今回からconnpassでも案内を出すようにしました
* 今回はアンカンファレンス形式で進めました
 * アンカンファレンス・・・講演内容や発表者が当日まで決まっておらず、来場者が自分の話したい内容を発表する、参加者が全員でつくりあげるカンファレンス

# 議題
## 議題１：⭐︎以下のようなHTML構造で、最後のid=702の要素を指定するセレクタはどのようなものがあるか⭐︎

```html
<td class='textLabel'>
  <span id='a0osif'>Tom</span>
</td>
<td>
  <div id='D701' parentid='D199' menuid='D750'></div>
</td>
<td>
  <div id='D702' parentid='D200' menuid='D750'></div> <!-- この要素 -->
</td>
```

* 条件としては以下のものがあります
 * 各要素のidなどはランダム生成される
 * xpathは極力使わない

### 解答例
* ```css=.textLabel:contains('Tom') ~ td:eq(1) div```
* ```css=.textLabel:contains('Tom') ~ td:nth-child(2) div```
* ```css=.textLabel:contains('Tom') ~ td:last-child div```
* ↑のHTMLではtdタグは３つあるが、間接セレクタの~(チルダ)より前の```.textLabel:contains('Tom')```にフォーカスが当たる
* そこで、~(チルダ)をつけることで弟要素が選択されて弟の２番目、つまりはインデックスは１となるのだろうと
 * ※ eqのインデックスは0からはじまり、nth-childのインデックスは1から始まる

### そもそもeqってCSSの公式にある関数？
* eqで検索するとjQueryばっかし出てくる
* CSS？...答えはNo
* どうやらSeleniumIDEのサポートするCSSセレクタはjQuery API selectorを指すようだ
* これを読むと面白い -> [jQueryで使えるけどCSSでは使えないセレクター](http://ginpen.com/2012/12/14/jquery-selectors/)
* jQueryのセレクタを知っておくと「こういうときどうするんだ！？」となったとき、疑問解決につながるかもしれませんね！

## 議題２：⭐︎Seleniumをどのように使っているのか知りたい⭐︎
* 質問の背景として「手動のテストって大変だなぁ、機能追加の旅に同じようなことをするのは非効率だ」と感じた
* SeleniumWebdriverはrspecやcucumberと絡めて開発の中でいろいろ使っています
* Seleniumの導入は玉川さんのSelenium本を参考にされたらしい(みんな読んでますね)
 * 2015年9月中旬にSelenium本またでますね！ デザインパターンの本

## 議題３：⭐︎Appium + Androidエミュレータが重すぎて動いたもんじゃない、何か回避策ありますか？⭐︎
* ローカルにAppium＋Androidエミュレータでテストが動かせる環境は構築したがあまりに重すぎるし固まるし・・・

### アドバイス
#### その１
* XcodeのiOSシミュレータと比べると遅いですよね・・対応方法はいくつかありますけど、Android実機が手元にあるなら実機がベストという印象。
 * => そうですよね、やっぱり実機ですかね
* エミュレータの回避策としては、
    * Androidエミュレータは遅い！重い！！Intel x86設定で高速化して使うべし | サクッとJava研修室
        * http://saku-java.be-ourselves.jp/2014/05/18/intel-x86-android-emulator-setting/
    * パソコンで様々な端末のAndroid環境を動作させられる「Genymotion」のインストール方法
        * http://nelog.jp/genymotion-install
        
#### その２
* androidシミュレータは少し選ばないと重くて使いにくい印象です
* [第４回 Selenium談話会 in Slack](http://qiita.com/oh_rusty_nail/items/6efffcb71818914f776e)で紹介があったインストールマニュアルを参考にエミュレータ使ってみたんですが、CPUとメモリをかなり振り分けてもカクカクでした
* genymotionは触ってないですが、今の所触った中ではAndyが良さそうなので、タイミングみてappium動かしてみたいですね。まずは正常動作を試すために実機の方の優先度が高いか・・・。


# 次回
* 最近Seleniumを触り始めましたという方もメンバに増えているので、なんか面白い交流ができるようにしたいなと考え中
* 9月の半ばに新しいSelenium本 [Seleniumデザインパターン & ベストプラクティス](http://www.oreilly.co.jp/books/9784873117423/) がでるのでそれの読書会みたいなものをするのもいいかなと考え中



----

# ～ただの宣伝～
* [全国のSeleniumer必読](http://qiita.com/oh_rusty_nail/items/b8ba525d31ea7c522856)
* Selenium, SauceLabs, TravisCI, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください