Weitere ähnliche Inhalte
Ähnlich wie 【Camphor ×サイボウズ】selenium勉強会 (20)
【Camphor ×サイボウズ】selenium勉強会
- 21. 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/
- 22. 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
- 24. 動作確認
• 本家ドキュメント
• 処理の流れ
• 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 を選択
- 25. サンプルコード (Python)
from selenium import webdriver!
!
driver = webdriver.Firefox()!
#driver = webdriver.Chrome('./chromedriver')!
!
driver.get("http://cybozu.co.jp")!
driver.quit()
$ python 1.py
- 27. サンプルコード (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
- 28. サンプルコード (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
- 30. 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でリンク要素を取得
• リンク要素をクリック
- 31. サンプルコード (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()
- 32. サンプルコード (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
- 33. サンプルコード (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();
- 34. サンプルコード (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();!
}!
}
- 36. サンプルコード (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()
- 37. サンプルコード (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
- 38. サンプルコード (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();
- 39. サンプルコード (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();!
}!
}