LoginSignup
7
5

More than 5 years have passed since last update.

【Selenium】調整さんのイベントをつくってくれるやつ

Posted at

やること

自動化による継続的なブラウザテストを行うSeleniumですが、調整さんを使って試してみる。ブラウザテストという本来の目的とは違うけど、動きをみたいので、まぁいいか。
スクリーンショット 2017-12-29 12.37.03.png

環境

OS : Mac
ブラウザ : Safari
言語 : Python

やってみる

インストール

sudo pip install selenium

この他に、Safariの[開発]>[リモートオートメーションの許可]を行う。

とりあえず調整さんを開いてみる

selenium_python.py
from selenium import webdriver

# Safari用のWebDriver
browser = webdriver.Safari()
# 調整さんを表示
browser.get('https://chouseisan.com/')

実行すると、URL部分の色がオレンジ色のブラウザが立ち上がる。
この画面の「イベント名」「候補日程」を入力したのち、「出欠表をつくる」ボタンを押すようにする。
スクリーンショット 2017-12-29 12.50.47.png

「イベント名」を入力

「イベント名」のidは「name」であるので、以下のように記述。

selenium_python.py
event_name = browser.find_element_by_id('name')
event_name.send_keys('Seleniumから入力')

ただ、これを実行すると以下のようなエラーが発生した。

File "selenium_python.py", line 6
SyntaxError: Non-ASCII character '\xe3' in file selenium_python.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

原因はエンコードの問題のため、文頭にエンコードの設定を書いてあげる。

Pythonにおける文字列はasciiコードでエンコードされるため、日本語のようなマルチバイト文字があるとエラーとなってしまいます。
http://uxmilk.jp/8851

selenium_python.py
# coding: UTF-8

と、やってみたものの、なんだかうまくいかない、ということで日本語の入力を一旦やめてとりあえず前に進もう。以下に変更して前に進みます。

selenium_python.py
event_name = browser.find_element_by_id('name')
event_name.send_keys('Selenium')

スクリーンショット 2017-12-29 14.42.35.png

[イベント名]に入力されました。

次に、カレンダーを選択することをSeleniumに行わせるが、カレンダーの要素は以下のようになっている。

<td class=" ui-datepicker-week-end " data-handler="selectDay"
data-event="click" data-month="11" data-year="2017">
<a class="ui-state-default" href="#">31</a>
</td>

きっとtdタグををクッリクすれば文字が入力されると思うので、
".ui-datepicker-week-end"を持ち、
"data-month='11'とdata-year='2017'"を持つものをクリックすれば、
日付が入るものと思われるためコードを書いてみる。

find_elements_by_css_selectorを利用するとリストで値がかえってくるのでindexを指定してクリックしてあげると、候補日程に時間日にちが入った。

selenium_python.py
event_date = browser.find_elements_by_css_selector(".ui-datepicker-week-end[data-month='11'][data-year='2017']")
event_date[1].click()

スクリーンショット 2017-12-29 15.17.44.png

入力が済んだので、アンケートの登録を行う。
自動テストの際にエビデンスの取得などの際は、ここでスクリーンショットをとったりするのかな。

とりあえず、とらずにsubmitする。
submit()でもよいが、submit()だとonClickイベントがおきないため、click()を使用している。

selenium_python.py
event_submit = browser.find_element_by_id('createBtn')
event_submit.click()

スクリーンショット 2017-12-29 15.39.16.png

その他

以下のエラーが発生した時は、一度Safariをプロセスごと落として、再度リモートオートメーションを許可すればなおった。

selenium.common.exceptions.SessionNotCreatedException: Message: Could not create a session: You must enable the 'Allow Remote Automation' option in Safari's Develop menu to control Safari via WebDriver.

参考にさせていただきました

http://www.seleniumqref.com/api/python/element_set/Python_send_keys.html
http://uxmilk.jp/8851
python:selenium_python.py

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5