More Related Content
Similar to Selenium webdriver使ってみようず (20)
More from Oda Shinsuke (20)
Selenium webdriver使ってみようず
- 5. 提供されている WebDriver
HtmlUnit Driver
Firefox Driver
Internet Explorer Driver
Chrome Driver
Opera Driver
iPhone Driver
Android Driver
- 6. みんな大好き IE Driver を使う
前準備
IE がインストールされている
ツール => インターネット オプション =>
セキュリティ タブ => 全てのゾーンで「保
護モードを有効にする」チェック値を統一
- 7. C# で
Visual Web Developer 2010 Express
(VWD2010)
拡張機能マネージャーから NuGet インス
トール
Package Manage Console(NuGet) から
Install-Package Selenium.WebDriver
Install-Package Selenium.Support
Support は便利だからいれてます
- 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. [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. 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. 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. Java (Maven) で
selenium-java
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.18.0</version>
</dependency>
これいれると、ie-driver や support も
ついてくる
- 13. @Test
public 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. @Test
public 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. 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. 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. 便利なやつ
Wait
指定条件を満たすまで、wait する(タイム
アウト指定)
Select
input type=“select” な WebElement の
ラッパー
PageFactory
PageObject の実装を少し楽にしてくれる
- 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. Select
WebElement 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();