Your SlideShare is downloading. ×
0
SeleniumWebDriver使ってみようず     鍋駆動 2012/02/20     お だ
自己紹介織田 信亮(おだ しんすけ)大阪で開発者していますhttp://d.hatena.ne.jp/odashinsuke/Twitter:@shinsukeoda
Selenium WebDriver ってなに?http://seleniumhq.org/docs/03_webdriver.html  Selenium が WebDriver と統合された  Selenium 1.0 だと JavaScr...
API が提供されている言語JavaC#PythonRubyPHPPerl
提供されている WebDriver HtmlUnit Driver Firefox Driver Internet Explorer Driver Chrome Driver Opera Driver iPhone Driver Android...
みんな大好き IE Driver を使う 前準備  IE がインストールされている  ツール => インターネット オプション =>  セキュリティ タブ => 全てのゾーンで「保  護モードを有効にする」チェック値を統一
C# で Visual Web Developer 2010 Express (VWD2010) 拡張機能マネージャーから NuGet インス トール Package Manage Console(NuGet) から   Install-Pac...
[Test]public void 検索() {  var driver = new InternetExplorerDriver();  try {    driver.Navigate().GoToUrl("http://www.bing....
[TestFixture]public class PageObjectTest {  [Test]  public void 検索() {    var driver = new InternetExplorerDriver();    tr...
public class BingSearch { public static BingSearch Create(RemoteWebDriver driver) {   var instance = new BingSearch(driver...
public void Input検索条件(string 条件) {    this.txt条件.Clear();    this.txt条件.SendKeys(条件);  }  public void Click検索() {    this....
Java (Maven) で selenium-java  <dependency>   <groupId>org.seleniumhq.selenium</groupId>   <artifactId>selenium-java</artif...
@Testpublic void 検索() {  RemoteWebDriver driver = new InternetExplorerDriver();  try {    driver.navigate().to("http://www...
@Testpublic void 検索() {  RemoteWebDriver driver = new InternetExplorerDriver();  try {    BingSearch instance = BingSearch...
public class BingSearch { private final RemoteWebDriver driver; public static BingSearch create(RemoteWebDriver driver) { ...
public void input検索条件(String 条件) {      this.txt条件().clear();      this.txt条件().sendKeys(条件);    }    public void click検索(...
便利なやつWait   指定条件を満たすまで、wait する(タイム   アウト指定)Select   input type=“select” な WebElement の   ラッパーPageFactory   PageObject の実装を...
Wait WebDriverWait が良く使われる ExpectedConditions を使って条件指定 Function を自前で実装も可 WebDriver driver = null; Wait<WebDriver> wait = n...
SelectWebElement select = null;List<WebElement> options =select.findElements(By.tagName("option"));for (WebElement option ...
PageFactory @ ベースで、要素とフィールドのマッピ ング
Upcoming SlideShare
Loading in...5
×

Selenium webdriver使ってみようず

4,126

Published on

作りかけ

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,126
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Selenium webdriver使ってみようず"

  1. 1. SeleniumWebDriver使ってみようず 鍋駆動 2012/02/20 お だ
  2. 2. 自己紹介織田 信亮(おだ しんすけ)大阪で開発者していますhttp://d.hatena.ne.jp/odashinsuke/Twitter:@shinsukeoda
  3. 3. Selenium WebDriver ってなに?http://seleniumhq.org/docs/03_webdriver.html Selenium が WebDriver と統合された Selenium 1.0 だと JavaScript/HTML で 記述がメイン WebDriver は、Selenium ではセキュリ ティで制限されていたものが回避出来る Selenium 2.0 で統合!
  4. 4. API が提供されている言語JavaC#PythonRubyPHPPerl
  5. 5. 提供されている WebDriver HtmlUnit Driver Firefox Driver Internet Explorer Driver Chrome Driver Opera Driver iPhone Driver Android Driver
  6. 6. みんな大好き IE Driver を使う 前準備 IE がインストールされている ツール => インターネット オプション => セキュリティ タブ => 全てのゾーンで「保 護モードを有効にする」チェック値を統一
  7. 7. C# で Visual Web Developer 2010 Express (VWD2010) 拡張機能マネージャーから NuGet インス トール Package Manage Console(NuGet) から Install-Package Selenium.WebDriver Install-Package Selenium.Support Support は便利だからいれてます
  8. 8. [Test]public void 検索() { var driver = new InternetExplorerDriver(); try { driver.Navigate().GoToUrl("http://www.bing.com"); var txt条件 = driver.FindElementByName("q"); txt条件.Clear(); txt条件.SendKeys("Microsoft"); var btn検索 = driver.FindElementByXPath( "//input[@type=submit and @name=go]"); btn検索.Click(); var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10)); wait.Until(ExpectedConditions.TitleIs("Microsoft - Bing")); var lbl件数 = driver.FindElementById("count"); Regex.Match(lbl件数.Text, "(?<=of ).*(?= results)").Value .Is("527,000,000"); } finally { driver.Quit(); }}
  9. 9. [TestFixture]public class PageObjectTest { [Test] public void 検索() { var driver = new InternetExplorerDriver(); try { var instance = BingSearch.Create(driver); instance.Input検索条件("Microsoft"); instance.Click検索(); instance.Get検索結果件数().Is("527,000,000"); } finally { driver.Quit(); } }}
  10. 10. public class BingSearch { public static BingSearch Create(RemoteWebDriver driver) { var instance = new BingSearch(driver); driver.Url = "http://www.bing.com"; return instance; } private readonly RemoteWebDriver driver; private BingSearch(RemoteWebDriver driver) { this.driver = driver; } private IWebElement txt条件 { get { return driver.FindElementByName("q"); } } private IWebElement btn検索 { get { return driver.FindElementByXPath( "//input[@type=submit and @name=go]"); } } private IWebElement lbl件数 { get { return driver.FindElementById("count"); } }
  11. 11. public void Input検索条件(string 条件) { this.txt条件.Clear(); this.txt条件.SendKeys(条件); } public void Click検索() { this.btn検索.Click(); var wait = new WebDriverWait(this.driver, new TimeSpan(0, 0, 10)); wait.Until(ExpectedConditions.TitleIs("Microsoft - Bing")); } public string Get検索結果件数() { return Regex.Match(this.lbl件数.Text, "(?<=of ).*(?= results)").Value; }}https://gist.github.com/1861739
  12. 12. Java (Maven) で selenium-java <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.18.0</version> </dependency> これいれると、ie-driver や support も ついてくる
  13. 13. @Testpublic void 検索() { RemoteWebDriver driver = new InternetExplorerDriver(); try { driver.navigate().to("http://www.bing.com"); WebElement txt条件 = driver.findElementByName("q"); txt条件.clear(); txt条件.sendKeys("Microsoft"); WebElement btn検索 = driver.findElementByXPath( "//input[@type=submit and @name=go]"); btn検索.click(); Wait<WebDriver> wait = new WebDriverWait(driver, 10); wait.until(titleIs("Microsoft - Bing")); WebElement lbl件数 = driver.findElementById("count"); assertThat(lbl件数.getText() .replaceAll("(.*of )(.*)( results)", "$2"), is("527,000,000")); } finally { driver.quit(); }}
  14. 14. @Testpublic void 検索() { RemoteWebDriver driver = new InternetExplorerDriver(); try { BingSearch instance = BingSearch.create(driver); instance.input検索条件("Microsoft"); instance.click検索(); assertThat(instance.get検索結果件数(), is("527,000,000")); } finally { driver.quit(); }}
  15. 15. public class BingSearch { private final RemoteWebDriver driver; public static BingSearch create(RemoteWebDriver driver) { BingSearch instance = new BingSearch(driver); driver.navigate().to("http://www.bing.com"); return instance; } private BingSearch(RemoteWebDriver driver) { this.driver = driver; } private WebElement txt条件() { return driver.findElementByName("q"); } private WebElement btn検索() { return driver.findElementByXPath( "//input[@type=submit and @name=go]"); } private WebElement lbl件数() { return driver.findElementById("count"); }
  16. 16. public void input検索条件(String 条件) { this.txt条件().clear(); this.txt条件().sendKeys(条件); } public void click検索() { this.btn検索().click(); Wait<WebDriver> wait = new WebDriverWait(driver, 10); wait.until(titleIs("Microsoft - Bing")); } public String get検索結果件数() { return this.lbl件数().getText().replaceAll( "(.*of )(.*)( results)", "$2"); }} https://gist.github.com/1861829
  17. 17. 便利なやつWait 指定条件を満たすまで、wait する(タイム アウト指定)Select input type=“select” な WebElement の ラッパーPageFactory PageObject の実装を少し楽にしてくれる
  18. 18. Wait WebDriverWait が良く使われる ExpectedConditions を使って条件指定 Function を自前で実装も可 WebDriver driver = null; Wait<WebDriver> wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.titleIs("タイトル")); wait.until(new Function<WebDriver, Boolean>() { public Boolean apply(WebDriver arg0) { try { return "タイトル".equals(arg0.getTitle()); } catch (Throwable e) { return null; } } });
  19. 19. SelectWebElement select = null;List<WebElement> options =select.findElements(By.tagName("option"));for (WebElement option : options) { option.click(); // 選択させる if (option.isSelected()) { // 選択していたら }}Select wrapper = new Select(select);// 選択させるwrapper.selectByIndex(0);wrapper.selectByValue("hoge");wrapper.selectByVisibleText("フヒヒ");// 選択されているもの取得wrapper.getFirstSelectedOption();wrapper.getAllSelectedOptions();
  20. 20. PageFactory @ ベースで、要素とフィールドのマッピ ング
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×