SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
【CAMPHOR- × サイボウズ】
Selenium 勉強会
2014/12/14 CAMPHOR- HOUSE
ハッシュタグ #cybozu
自己紹介
• 岡田勇樹 @y_okady
• サイボウズ新卒8年目 31歳
• 神戸大学大学院 情報知能工学専攻
• kintone開発チーム リーダー
• 大阪開発部@グランフロント 副部長
Agenda
• サイボウズとkintoneのご紹介
• Seleniumの解説
• Seleniumハンズオン
• 自動テストでSeleniumを使うために必要なこと
• 最後に
サイボウズとkintone
サイボウズ
• 「グループウェア」のメーカー
• 東京、松山、大阪、上海、ベトナムで開発
• バリバリ開発してる会社
• どんなものを作るか考えるのも実際に作るのも全部内製
• インフラからWebアプリケーションまで全部内製
• 特徴的な人事制度
• 会社辞めてもいつでも戻ってきていいよ
• 台風の日はできるだけ在宅勤務してね
• 国内シェアNo.1、kintoneで世界一を目指してます
kintone
業務アプリ?Webデータベー
ス?
こんな時どうする
• チームでアイデアを共有する「アイデアボッ
クス」を作りたい時、あなたならどうします
か?
アイデアボックスを作ろう
• やっぱWebアプリでしょ
• サーバー用意しなきゃ
• 言語とかフレームワークとかどうしよっかな
• データベースの設計しなきゃ
• 何日あれば作れるかな…
kintoneの場合
そろそろSeleniumの話が聞きたいなー
実はもう始まってます
実はさっきの動画
• kintoneをSeleniumで操作したんです!
• テキストボックスへの入力も
• ラジオボタンの選択も
• リンクのクリックも
• ドラッグ&ドロップも
• Seleniumってなんかすごそう!!
Selenium
Seleniumとは
• Webブラウザの操作を自動化するツール
• Firefox拡張のSelenium IDEが一世を風靡
• プログラミング不要
• UIを変更するとテストがすぐ落ちる
• Firefoxでしか動かない
• 近年Selenium WebDriverが頭角を現す
Seleniumでできること
• URLを指定してWebページを開く
• DOMの要素を取得する
• 要素に対して何かする
• クリックする
• 文字を取り出す
• 文字を入力する
• ドラッグ&ドロップする
Selenium WebDriver
JavaScript
ブラウザ/OS API
昔のSelenium
Selenium
WebDriver
言語バインディング
• 公式
• 非公式
ハンズオン
ハンズオンの流れ
1.インストール
2.動作確認
3.CAMPHOR-のWebサイトを操作
4.Google検索ページを操作
Seleniumのインストール
• Python
• Ruby
• JavaScript (Node.js)
• Java
$ pip install selenium
$ gem install selenium-webdriver
$ npm install -g selenium-webdriver
$ curl -O http://selenium-release.storage.googleapis.com/2.44/selenium-
java-2.44.0.zip && unzip selenium-java-2.44.0.zip
http://www.seleniumhq.org/
Driverのダウンロード
• Chrome (Mac)
• Chrome (Windows)
• Firefoxは不要
$ curl -O http://chromedriver.storage.googleapis.com/2.12/
chromedriver_mac32.zip && unzip chromedriver_mac32.zip
$ curl -O http://chromedriver.storage.googleapis.com/2.12/
chromedriver_win32.zip && unzip chromedriver_win32.zip
動作確認
• サイボウズのWebサイトを開いてみよう
• 処理の流れ
• Seleniumをimport/require
• Firefox/Chrome Driverインスタンスを生成
• getメソッドにURLを指定してWebサイトを開く
• quitメソッドで終了
http://cybozu.co.jp
動作確認
• 本家ドキュメント
• 処理の流れ
• Seleniumをimport/require
• Firefox/Chrome Driverインスタンスを生成
• getメソッドにURL (http://cybozu.co.jp) を指定
• quitメソッドで終了
[Documentation] > [Introducing the Selenium-WebDriver API by Example]
http://www.seleniumhq.org/
Programming Language Preference を選択
サンプルコード (Python)
from selenium import webdriver!
!
driver = webdriver.Firefox()!
#driver = webdriver.Chrome('./chromedriver')!
!
driver.get("http://cybozu.co.jp")!
driver.quit()
$ python 1.py
サンプルコード (Ruby)
require 'selenium-webdriver'!
!
driver = Selenium::WebDriver.for :firefox!
#driver = Selenium::WebDriver.for :chrome!
!
driver.get “http://cybozu.co.jp”!
driver.quit
$ ruby 1.rb
サンプルコード (JavaScript)
var firefox = require('selenium-webdriver/firefox');!
//var chrome = require('selenium-webdriver/chrome');!
!
var driver = new firefox.Driver();!
//var driver = new chrome.Driver();!
!
driver.get('http://cybozu.co.jp');!
driver.quit();
$ node 1.js
サンプルコード (Java)
import org.openqa.selenium.WebDriver;!
import org.openqa.selenium.chrome.ChromeDriver;!
import org.openqa.selenium.firefox.FirefoxDriver;!
!
public class SeleniumIntro {!
public static void main(String[] args) {!
WebDriver driver = new FirefoxDriver();!
//WebDriver driver = new ChromeDriver();!
!
driver.get("http://cybozu.co.jp");!
driver.quit();!
}!
}
$ javac -cp selenium-2.44.0/selenium-java-2.44.0.jar Selenium1.java!
$ java -cp .:selenium-2.44.0/selenium-java-2.44.0.jar:selenium-2.44.0/libs/* Selenium1
CAMPHOR-のWebサイトを操作
• トップページ (https://camph.net) で
「CAMPHOR-について詳しく見る」をクリッ
クすると、About (https://camph.net/about/)
に遷移することを確認する
CAMPHOR-のWebサイトを操作
• WebDriver APIドキュメント
• Python: http://selenium-python.readthedocs.org/en/latest/api.html
• Ruby: http://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/
WebDriver
• JavaScript: http://selenium.googlecode.com/git/docs/api/javascript/
module_selenium-webdriver.html
• Java: https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/
selenium/WebDriver.html
• 処理の流れ
• driver.findElementとBy.linkTextでリンク要素を取得
• リンク要素をクリック
サンプルコード (Python)
# -*- coding: utf-8 -*-!
from selenium import webdriver!
from selenium.webdriver.common.by import By!
!
driver = webdriver.Firefox()!
#driver = webdriver.Chrome('./chromedriver')!
!
driver.get("https://camph.net")!
!
link = driver.find_element(By.LINK_TEXT, u"CAMPHOR-について詳しく見る");!
link.click()!
!
print driver.current_url == "https://camph.net/about/"!
!
driver.quit()
サンプルコード (Ruby)
require 'selenium-webdriver'!
!
driver = Selenium::WebDriver.for :firefox!
#driver = Selenium::WebDriver.for :chrome!
!
driver.get "https://camph.net"!
!
link = driver.find_element(:link_text, "CAMPHOR-について詳しく見る")!
link.click!
!
print driver.current_url == "https://camph.net/about/"!
!
driver.quit
サンプルコード (JavaScript)
var By = require('selenium-webdriver').By;!
var firefox = require('selenium-webdriver/firefox');!
//var chrome = require('selenium-webdriver/chrome');!
!
var driver = new firefox.Driver();!
//var driver = new chrome.Driver();!
!
driver.get('https://camph.net');!
!
var link = driver.findElement(By.linkText('CAMPHOR-について詳しく見る'));!
link.click();!
!
driver.getCurrentUrl().then(function(url) {!
console.log(url == 'https://camph.net/about/');!
});!
!
driver.quit();
サンプルコード (Java)
import org.openqa.selenium.By;!
import org.openqa.selenium.WebDriver;!
import org.openqa.selenium.WebElement;!
import org.openqa.selenium.chrome.ChromeDriver;!
import org.openqa.selenium.firefox.FirefoxDriver;!
!
public class Selenium2 {!
public static void main(String[] args) {!
WebDriver driver = new FirefoxDriver();!
//WebDriver driver = new ChromeDriver();!
!
driver.get("https://camph.net");!
!
WebElement link = driver.findElement(By.linkText("CAMPHOR-について詳しく見る"));!
link.click();!
!
System.out.println(driver.getCurrentUrl().equals("https://camph.net/about/"));!
!
driver.quit();!
}!
}
Google検索ページを操作
• 「サイボウズ」を検索した時に表示される、関連キーワード
一覧を出力する
• 処理の流れ
• 検索ボックスに「サイボウズ」を入力
• フォームをsubmit
• 検索結果画面が表示されるまで待つ
• 関連キーワードの要素からリンク一覧を取得
サンプルコード (Python)
# -*- coding: utf-8 -*-!
from selenium import webdriver!
from selenium.webdriver.common.by import By!
from selenium.webdriver.support.ui import WebDriverWait!
from selenium.webdriver.support import expected_conditions!
!
driver = webdriver.Firefox()!
#driver = webdriver.Chrome('./chromedriver')!
!
driver.get("http://www.google.com")!
!
input = driver.find_element(By.NAME, "q")!
input.send_keys(u"サイボウズ")!
input.submit()!
!
WebDriverWait(driver, 10).until(expected_conditions.title_is(u”サイボウズ - Google 検索"))!
!
extra = driver.find_element(By.ID, "extrares")!
links = extra.find_elements(By.TAG_NAME, "a")!
for link in links:!
print link.text!
!
driver.quit()
サンプルコード (Ruby)
require 'selenium-webdriver'!
!
driver = Selenium::WebDriver.for :firefox!
#driver = Selenium::WebDriver.for :chrome!
!
driver.get "http://www.google.com"!
!
input = driver.find_element(:name, "q")!
input.send_keys("サイボウズ")!
input.submit()!
!
wait = Selenium::WebDriver::Wait.new(:timeout => 10)!
wait.until {!
driver.title == “サイボウズ - Google 検索“!
}!
extra = driver.find_element(:id, "extrares")!
links = extra.find_elements(:tag_name, "a")!
links.each {|link|!
puts link.text!
}!
!
driver.quit
サンプルコード (JavaScript)
var By = require('selenium-webdriver').By;!
var firefox = require('selenium-webdriver/firefox');!
//var chrome = require('selenium-webdriver/chrome');!
!
var driver = new firefox.Driver();!
//var driver = new chrome.Driver();!
!
driver.get('http://www.google.com');!
var input = driver.findElement(By.name('q'));!
input.sendKeys('サイボウズ');!
input.submit();!
!
driver.wait(function() {!
return driver.getTitle().then(function(title) {!
return title == ‘サイボウズ - Google 検索‘;!
});!
}, 10000);!
var extra = driver.findElement(By.id('extrares'));!
extra.findElements(By.tagName('a')).then(function(links) {!
for (var i = 0; i < links.length; i++) {!
links[i].getText().then(function(text) {!
console.log(text);!
});!
}!
});!
!
driver.quit();
サンプルコード (Java)
import java.util.List;!
import org.openqa.selenium.By;!
import org.openqa.selenium.WebDriver;!
import org.openqa.selenium.WebElement;!
import org.openqa.selenium.chrome.ChromeDriver;!
import org.openqa.selenium.firefox.FirefoxDriver;!
import org.openqa.selenium.support.ui.ExpectedCondition;!
import org.openqa.selenium.support.ui.WebDriverWait;!
!
public class Selenium3 {!
public static void main(String[] args) {!
WebDriver driver = new FirefoxDriver();!
//WebDriver driver = new ChromeDriver();!
!
driver.get("http://google.com");!
!
WebElement input = driver.findElement(By.name("q"));!
input.sendKeys("サイボウズ");!
input.submit();!
!
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {!
public Boolean apply(WebDriver d) {!
return d.getTitle().equals("サイボウズ - Google 検索");!
}!
});!
!
WebElement extra = driver.findElement(By.id("extrares"));!
List<WebElement> links = extra.findElements(By.tagName("a"));!
for (WebElement link : links) {!
System.out.println(link.getText());!
}!
!
driver.quit();!
}!
}
Seleniumで自動テスト
テストフレームワーク
• xUnitなど
• 自動テストをやるなら必須
PageObjectデザインパターン
• テスト対象となる画面やコンポーネントを
PageObjectと呼ばれるクラスで共通化
• テストメソッド内にByを書かなくて済む
• UI変更に強くなる
• Seleniumテストをいっぱい書くなら必須
RemoteWebDriver
• テストを実行するマシンとブラウザを操作す
るマシンを分ける
• 複数のOSやブラウザでテストをするなら必須
Selenium Grid
• 複数のOSやブラウザでのテストを並列化する
• Seleniumテストをめっちゃいっぱい書くなら
必須
Jenkins
• 継続的インテグレーションツール
• Gitにpushされた時に自動的にSeleniumテス
トを実行したりできる
• 大人数で開発したり、より高い品質を求める
なら必須
kintoneとSelenium
• テストケースは1,000個以上
• 並列数は36
• 実行時間は約30分
• kintoneはSeleniumに支えられてます!
最後に
まだまだ伝えたいことがある!
• PageObjectパターンでUI変更に強いテストを書こう
• RemoteWebDriverを使っていろんなブラウザでテス
トしよう
• Selenium Gridを使って大規模運用しよう
• Jenkinsで自動テストを自動実行しよう
次回Selenium勉強会
• 今のところ未定!
• でもやりたい
• 発表者募集中です
• もちろん参加者募集中です
• こんなことやりたい!というのがあればアン
ケートに記入お願いします
本当に最後に
• サイボウズで一緒にSeleniumテストを書いてくれる仲間を募集中です!
• テスト自動化しておふくろを楽にしたい方
• テスト自動化して彼女を作りたい方
• テスト自動化して人生を豊かにしたい方
• 勉強会の出席を自動化したい方
• テスト自動化してモテたい方
• テスト自動化してみんなを幸せにしたい方
• 学校のテストでいい点取りたい方
ありがとうございました!
懇親会もよろしくお願いします!!

Contenu connexe

Tendances

HTML5 開発環境の紹介
HTML5 開発環境の紹介HTML5 開発環境の紹介
HTML5 開発環境の紹介tomo_masakura
 
Java web application testing
Java web application testingJava web application testing
Java web application testingTokuhiro Matsuno
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップNaoki Iwami
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockNobuhiro Sue
 
laravel x モバイルアプリ
laravel x モバイルアプリlaravel x モバイルアプリ
laravel x モバイルアプリMasaki Oshikawa
 
HTML5 アプリ開発
HTML5 アプリ開発HTML5 アプリ開発
HTML5 アプリ開発tomo_masakura
 
Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Tatsuya Ishikawa
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4アシアル株式会社
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugToshiaki Maki
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術finoue
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみたTakeo Noda
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成Tomoki Oyamatsu
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)Tatsuya Ishikawa
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスYoichi KIKUCHI
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知zaru sakuraba
 

Tendances (20)

HTML5 開発環境の紹介
HTML5 開発環境の紹介HTML5 開発環境の紹介
HTML5 開発環境の紹介
 
Java web application testing
Java web application testingJava web application testing
Java web application testing
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
 
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and SpockJJUG CCC 2011 Fall / Web test automation with Geb and Spock
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
 
What makes Geb groovy?
What makes Geb groovy?What makes Geb groovy?
What makes Geb groovy?
 
laravel x モバイルアプリ
laravel x モバイルアプリlaravel x モバイルアプリ
laravel x モバイルアプリ
 
HTML5 アプリ開発
HTML5 アプリ開発HTML5 アプリ開発
HTML5 アプリ開発
 
Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
Gradle布教活動
Gradle布教活動Gradle布教活動
Gradle布教活動
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
 
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知
 

En vedette

なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudyなんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudyPOStudy
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことYuki Okada
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介Yuki Okada
 
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記友隆 浅黄
 
UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選Yuki Okada
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールYuki Okada
 
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
自社サービスkintoneをふんだんに活用したサイボウズの開発フローYuki Okada
 
kintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みRyo Mitoma
 
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?civicpg
 
ゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦いゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦い裕哉 駒場
 
Selenium Conference 2015 参加報告
Selenium Conference 2015 参加報告Selenium Conference 2015 参加報告
Selenium Conference 2015 参加報告Jumpei Miyata
 
Chatbot for kintone Apps on Facebook Messenger
Chatbot for kintone Apps on Facebook MessengerChatbot for kintone Apps on Facebook Messenger
Chatbot for kintone Apps on Facebook MessengerPhan Anh Nguyen
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話Y Watanabe
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンスNozomi Ito
 
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用kotaro_hirayama
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホンYou_Kinjoh
 
kintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテストkintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテストJumpei Miyata
 
アジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドアジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドHiroyuki Ito
 
Bootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りBootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りMasayuki Abe
 

En vedette (20)

なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudyなんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なこと
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
 
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
 
UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選UXを損ねる静的コンテンツ配信アンチパターン7選
UXを損ねる静的コンテンツ配信アンチパターン7選
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツール
 
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
 
kintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組み
 
Pythonでwebdriver
PythonでwebdriverPythonでwebdriver
Pythonでwebdriver
 
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
 
ゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦いゲーム情報設計における「霧」との戦い
ゲーム情報設計における「霧」との戦い
 
Selenium Conference 2015 参加報告
Selenium Conference 2015 参加報告Selenium Conference 2015 参加報告
Selenium Conference 2015 参加報告
 
Chatbot for kintone Apps on Facebook Messenger
Chatbot for kintone Apps on Facebook MessengerChatbot for kintone Apps on Facebook Messenger
Chatbot for kintone Apps on Facebook Messenger
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 
kintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテストkintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテスト
 
アジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドアジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイド
 
Bootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りBootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭り
 

Similaire à 【Camphor ×サイボウズ】selenium勉強会

Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例Takeshi Kondo
 
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたSelenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたMaiKaneko4
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~ikikko
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersTakeshi Arabiki
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdeviofd0
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界Nozomi Ito
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州koki_h
 
Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Toshiki Iga
 
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92Yoshito Tabuchi
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでHideaki Miyake
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsShuhei Eda
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門Mahito Ogura
 
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことPHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことksimoji
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングTakuro Sasaki
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門tsukasamannen
 

Similaire à 【Camphor ×サイボウズ】selenium勉強会 (20)

Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
 
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたSelenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
 
Firefoxosハンズオン
FirefoxosハンズオンFirefoxosハンズオン
Firefoxosハンズオン
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州
 
Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf
 
Haikara
HaikaraHaikara
Haikara
 
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
 
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったことPHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピング
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
 

Plus de Yuki Okada

エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAIエンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAIYuki Okada
 
拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA
拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA
拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKAYuki Okada
 
せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1
せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1
せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1Yuki Okada
 
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osakaサイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 OsakaYuki Okada
 
みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪
みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪
みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪Yuki Okada
 
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017Yuki Okada
 
Web開発の技術選び、 好き嫌いでやってませんか 〜技術選びで注目すべきポイントとは〜
Web開発の技術選び、 好き嫌いでやってませんか  〜技術選びで注目すべきポイントとは〜Web開発の技術選び、 好き嫌いでやってませんか  〜技術選びで注目すべきポイントとは〜
Web開発の技術選び、 好き嫌いでやってませんか 〜技術選びで注目すべきポイントとは〜Yuki Okada
 

Plus de Yuki Okada (7)

エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAIエンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
 
拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA
拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA
拠点をまたいだリモートスクラム・リモートモブプロ実践事例 - Developers Summit 2018 FUKUOKA
 
せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1
せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1
せっかくエンジニアやってるのになんで副業やらないんですか? - エンジニア副業Night #1
 
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osakaサイボウズのオープンソースへの取り組み - OSC 2018 Osaka
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
 
みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪
みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪
みんなが働きたい場所で働ける「リモート開発チーム」を目指してやっていること - Cybozu Days 2017 大阪
 
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
 
Web開発の技術選び、 好き嫌いでやってませんか 〜技術選びで注目すべきポイントとは〜
Web開発の技術選び、 好き嫌いでやってませんか  〜技術選びで注目すべきポイントとは〜Web開発の技術選び、 好き嫌いでやってませんか  〜技術選びで注目すべきポイントとは〜
Web開発の技術選び、 好き嫌いでやってませんか 〜技術選びで注目すべきポイントとは〜
 

【Camphor ×サイボウズ】selenium勉強会