※この辺は、情報がなかなか見つけれなかったので、もう少し細かく書きたい。。
■目的&条件
BrowserStackで、Seleniumを動かす
かつ、ローカルアドレスのサイトのテストを行う
かつ、Python、Macで実行
$ ./BrowserStackLocal ”Access key”
$ python test.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
desired_cap = {'browser': 'Firefox', 'browser_version': '43.0', 'os': 'Windows', 'os_version': '10', 'resolution': '1680x1050'}
# ローカルアドレスにアクセスするための設定、これ重要!!
desired_cap['browserstack.local'] = True
# ローカルではfirefoxで起動していたのを変更
#driver = webdriver.Firefox()
driver = webdriver.Remote(command_executor='http://”Username”:”Access key”@hub.browserstack.com:80/wd/hub', desired_capabilities=desired_cap)
以下の設定を入れて、
desired_cap['browserstack.local'] = True
以下を実行していない場合、
$ ./BrowserStackLocal ”Access key”
以下のような、エラーがでました。
WebDriverException: Message: [browserstack.local] is set to true but local testing through BrowserStack is not connected.
参考:BrowserStackのPython Documentation
最終的にやりたいこと:40通り以上の自動マルチブラウザテストをSelenium x CircleCI x BrowserStackで実現する
■目標
次、CircleCIでSeleniumを動かす
その次、CircleCIでSeleniumを動かし、BrowserStackと連携させる
CircleCIについて
https://blog.trident-qa.com/2015/12/selenium-on-circle-ci/
(リンク切れ)
CircleCIがビルドに使用するマシンはデフォルトではLinuxですが、このマシンには次のソフトウェアが既にセットアップされています1 。
Firefox、Chromeが最初からインストールされています。
ブラウザテストに必要なXvfbの仮想ディスプレイもセットアップ済です。
ChromeDriverとPhantomJSの実行ファイルもあらかじめPathの通った場所にセットアップ済です。
■追記
CircleCIでもSeleniumを動かせました。が、変なところで躓いたので、その点を残しておきます。
Seleniumが動けば、BrowserStackも動きました。
CircleCIのcircle.yml、コード例
machine:
timezone: Asia/Tokyo
dependencies:
pre:
- sudo pip install --upgrade pip
- sudo pip install selenium
test:
pre:
- ./bin/BrowserStackLocal $BSL_KEY:
background: true
- echo "-----start test-----"
override:
- python scripts/browserstack_test.py
post:
- echo "-----end test-----"
$BSL_KEYは、別ファイルから読み込むなり、環境変数に書き込むなりして取得するようにしています。
pip installについては、sudoが必要だったり不要だったりちょくちょく変わります。
コメント