SlideShare a Scribd company logo
Rseleniumとは
Webアプリケーションのテストを自動化するツールの一つ。
がWebブラウザで操作する代わりに指定された挙動を実行し、
Web上のプログラムの動作検証を行う枠組みを提供する。
“selenium” とは原子番号34の元素、
セレン(元素記号はSe/日本語のセレンは独語由来)のこと。
→自動ログインや自動のクリックができる!!
webからデータを取ってくる(スクレイピング)時に使える
次ページから環境構築を早速していく!
Dockerというアプリをダウンロード
Windows
https://docs.docker.jp/docker-for-windows/install.html#install-docker-desktop-on-windows
Mac
http://docs.docker.jp/docker-for-mac/install.html#install-and-run-docker-desktop-on-mac
M1
https://rion778.hatenablog.com/entry/2021/03/14/174259
※インストール後にWSL2というアプリのダウンロードを求
められたらダウンロードする
Dockerを使ってseleniumサーバを引っ張ってきたりコンテナ
を介してサーバを停止させたり消したりする
https://www.youtube.com/watch?v=DNnW4I43wyU
Chrome driver のダウンロード
Chrome driver はweb driver の一種でこいつがネット上を徘徊して
データを送ってくれる感じ(?)
Chrome driver ダウンロード
ChromeDriver -WebDriver for Chrome - Downloads (chromium.org)
※自分のgoogle chrome と同じバージョンのchrome driver を選ぶ
(じゃないとうまく使えない!)
seleniumサーバを引っ張ってくる
→次のコマンドをターミナル上で実行
docker pull selenium/standalone-chrome
セレンサーバを自分の環境に引っ張ってくる(?)
docker run –d –shm-size=1024m –p 4444:4444 selenium/standalone-chrome
ホストポート4444とコンテナポート4444をつなげてセレンサーバをrun(実
行)させる
-p:つなげる(publish), -d:? , --shm-size=1024m:割り当てるメモリの大
きさ)
これでdockerのContainer/Appsに新しいコンテナができているはず
正しく実行できたかどうかを確認するための方法としてブラウザからweb
ページにアクセスしてみるとよい(次ページ)
ブラウザからセレンサーバが正しく構築できているのかを
確認する方法
ブラウザのURLを打つ欄に「localhost:4444」と打ち込む。
もしくは「自分のIPアドレス:4444」と打ち込む。
こんな画面が出たらok!
※注意※
dockerでの一連の操作はメモリを大量に使うので
使用中はメモリがかつかつになる。。。
ずっとdockerコンテナを走らせているとpcが重くなってしまうので
やりたいことが終わったらDockerのContents/Appsでコンテナを
ストップさせて削除しよう。
(消してもまた同じコマンドをすればすぐにまたコンテナが作れる
あとは自分の行きたいページに行ったり、ログインが必要な場合は
id・パスワードを入れる欄をDOM(DOMについては後で触れる)
ベースで指定してそこに自分のid・パスワードを入れてログインボタンを
クリックする関数を使えばいい
Rseleniumのメソッドの説明はよいwebページがあるのでそちらを参考に
するのもいいかも
https://qiita.com/nozma/items/2731b36db8129439a931
library(httr)
library(rvest)
library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = “xxx.xxx.xxx.x”, ##自分のipアドレス
port = 4444,
browserName = "chrome")
Sys.sleep(5)
remDr$open()
コードを追いながら説明
remoteDriverがwebを徘徊してくれる(?)
・Sys.sleep(5)は5秒パソコンにじっとするように指示する関数
なぜこうするかというと一気にコードを実行すると相手のサーバに負荷がかかる
ため
・remDr$open()はサーバに接続しているらしい
remDr$navigate(“URL”)
Sys.sleep(5)
行きたいURLにremote driverが飛んでくれるメソッド
remDr$maxWindowSize()
remDr$screenshot(display=TRUE)
今いるサイトのスクリーンショットを取ってくれるメソッド
適宜使うことで自分がどんなサイトにいるのかがわかりコードが書きや
すくなる
webElem <- remDr$findElements(using="xpath",value ="/html/body/header/k2-
kite-header-tool-nav-provider/div/div/nav/k2-kite-header-account-
nav/a[2]/span")
DOMベースでサイト上の要素を指定することができるメソッドで、それ
を変数に入れることで指定した部分だけにメソッドが適用できるように
よく使うremDrメソッド
webElem <- remDr$findElement(~) ##引数書くと長くなるので省略
webElem$clickElement()
Sys.sleep(5)
findElementメソッドを使ってベースで指定した要素を
クリックするメソッド
ページを移動することになると思うのでSys.sleepで
ページの読み込み待機をする(多分なくてもいい)
webElem <- remDr$findElement(~) ##引数書くと長くなるので省略
webElem$sendKeysToElement(list(“xxxxxxx”))
またfindElementしたところに対してのメソッドで、
指定した要素を”xxxxxxx”で埋めてくれる(id・パスワード)
remDr$getCurrentUrl
いまいるサイトのURLを返してくれるメソッド
remDr$findElement()の詳しい使い方
1 ブラウザで対象のサイトを開いてF12キーを押す
Macはこのやり方で開発者ツールを開いて
https://applica.info/safari-developer-tool
(メモ)
開発者ツールで出てくるのはhtmlじゃなくてDOMというもので詳し
くは次のサイトを参照
https://www.codegrid.net/articles/2017-newer-dom-1/
2 開発者ツールの左上のポインタのマークのところをクリックし
てサイトの要素をクリックするとその部分のDOMが表示される
3 そのDOMを右クリックして「コピー」から「完全なXpathをコピー」
を選択してxpathをコピーする
4 webElem<-findElements(using = “xpath”,value = “xxxxx”)の”xxxxx”部分に
コピーしたxpathを入れてあげる
→これでDOMの一部を抜粋できた!!
クリックするなりパスワードを入力するなりウェブを抜き出すなりすれば
いいがウェブを抜き出すためにはDOMを処理する必要がある(次ページ)
XpathのほかにもDOMのidやcss形式、classを使った指定方法があるが
使いづらかったので使いたいひとは以下のサイトを参照
https://qiita.com/nakamichi/items/ad186633ae249b26d032
DOMから文章を抽出する
header_large <- unlist(remDr$getPageSource())
%>% read_html()
%>% html_nodes(xpath = "//span[@class = 'cmnc-large']")
%>% html_text()
%>% as.data.frame
getPageSource()メソッドでDOMを取得でき、それをhtml形式に変換し
その中でさらに文章を絞りたければhtml_nodes()を使うこともできる。
そして最後にhtml_text()にいれることでhtmlを人間語にしてくれる。
as.data.frameは見やすい形式にに変換するためにつけた。
Rでマネーフォワードをスクレイピングする - もうカツ丼はいいよな
(hatenablog.com)
わかりやすかった!
【知らなきゃ危ない!】webスクレイピング禁止サイトまとめ | 居酒屋
エンジニア (engineerismydream33.org)
スクレイピングで法を破らないように…
Dockerコマンド一覧 – Qiita
しらなくてもいいかな…
Pythonでスクレイピングのルール(robots.txt)をチェックするツールを作
る – Qiita
スクレイピングで法を破らないように…2(よくわからなかった)

More Related Content

Similar to Seleniumまとめ

Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)
onozaty
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
yasukoS
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Uemura Yuichi
 
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
de:code 2017
 
Android勉強会 1
Android勉強会 1Android勉強会 1
Android勉強会 1
shotaueda3
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
xyzplus_net
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
teruyaono1
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Kenichi Kambara
 
WEB開発動作テストの自動化 を行うSeleniumの紹介
WEB開発動作テストの自動化 を行うSeleniumの紹介WEB開発動作テストの自動化 を行うSeleniumの紹介
WEB開発動作テストの自動化 を行うSeleniumの紹介
Nobuhiko Futagami
 
WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門
Kohki Nakashima
 

Similar to Seleniumまとめ (20)

Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
 
Selenium
SeleniumSelenium
Selenium
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
 
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
 
Android勉強会 1
Android勉強会 1Android勉強会 1
Android勉強会 1
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
 
WEB開発動作テストの自動化 を行うSeleniumの紹介
WEB開発動作テストの自動化 を行うSeleniumの紹介WEB開発動作テストの自動化 を行うSeleniumの紹介
WEB開発動作テストの自動化 を行うSeleniumの紹介
 
WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門
 

Seleniumまとめ