1062
1080

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LIFULLAdvent Calendar 2017

Day 20

Selenium webdriverよく使う操作メソッドまとめ

Last updated at Posted at 2017-12-19

はじめに

こんにちは。QAの@mochioです。
本記事はLIFULL Advent Calendar 2017 20日目の記事になります。

業務で自動テストを実施しておりまして、そこでSeleniumを使っております。
Seleniumに関してはいろんな記事に書かれておりますのでそちらをご参照ください。
言語間で書き方が少し違うのもあったりしてごっちゃになるのでその整理のために作りました。

特定のURLでブラウザを起動する

Java
driver.get("URL");
C#
driver.Url = "URL";
Python
driver.get("URL")
Ruby
driver.get("URL") 

ページ遷移したいとき

Java
driver.navigate().to("URL");
C#
driver.Navigate().GoToUrl("URL");
Python
driver.get("URL")
Ruby
driver.navigate.to("URL") 

一つ前に戻りたいとき

Java
driver.navigate().back();
C#
driver.Navigate().Back();
Python
driver.back()
Ruby
driver.navigate.back 

一つ前に進みたいとき

Java
driver.navigate().forward();
C#
driver.Navigate().Forward();
Python
driver.forward()
Ruby
driver.navigate.forward 

ブラウザを更新する

Java
driver.navigate().refresh();
C#
driver.Navigate().Refresh();
Python
driver.refresh()
Ruby
driver.navigate.refresh

現在のURLを知りたいとき

Java
driver.getCurrentUrl()
C#
driver.Url;
Python
driver.current_url
Ruby
driver.current_url

タイトルを知りたいとき

Java
driver.getTitle():
C#
driver.Title;
Python
driver.title
Ruby
driver.title

ページのソースを取得したいとき

Java
driver.getPageSource();
C#
driver.PageSource;
Python
driver.page_source
Ruby
driver.page_source

ウインドウを閉じたいとき

Java
driver.close();
C#
driver.Close();
Python
driver.close()
Ruby
driver.close

すべてのウインドウを閉じたいとき

Java
driver.quit();
C#
driver.Quit();
Python
driver.quit()
Ruby
driver.quit

ある要素を取得したいとき

Java
driver.findElement(By.className("classname")); //classでの指定
driver.findElement(By.id("id")); //idでの指定
driver.findElement(By.xpath("xpath")); //xpathでの指定
C#
driver.FindElement(By.ClassName("classname")); //classでの指定
driver.FindElement(By.Id("id")); //idでの指定
driver.FindElement(By.Xpath("xpath")); //xpathでの指定
Python
driver.find_element_by_class_name("classname") # classでの指定
driver.find_element_by_id("id") # idでの指定
driver.find_element_by_xpath("xpath") # xpathでの指定
Ruby
driver.find_element(:class, "classname") # classでの指定
driver.find_element(:id, "id") # idでの指定
driver.find_element(:xpath, "xpath") # xpathでの指定

ある要素をクリックしたいとき

Java
driver.findElement(By.XPath("XPATH")).click();
C#
driver.FindElement(By.XPath("XPATH")).Click();
Python
driver.find_element_by_xpath("XPATH").click()
Ruby
driver.find_element(:xpath, "XPATH").click

ある要素までスクロールしたいとき

Java
WebElement element = driver.findElement(By.id("ID"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();
C#
var element = driver.FindElement(By.id("ID"));
Actions actions = new Actions(driver);
actions.MoveToElement(element);
actions.Perform();
Python
from selenium.webdriver.common.action_chains import ActionChains

element = driver.find_element_by_id("ID")
actions = ActionChains(driver)
actions.move_to_element(element)
actions.perform()
Ruby
driver.find_element(:id, "ID").location_once_scrolled_into_view

ドロップダウンを選択したいとき

※Select Supportをimportする必要あり。

Java
element = driver.findElement(By.xpath("xpath"));
Select(element).selectByIndex(indexnum); // indexで選択
Select(element).selectByValue("value"); // valueの値
Select(element).selectByVisibleText("text"); // 表示テキスト
C#
element = driver.FindElement(By.Xpath("xpath"));
Select(element).SelectByIndex(indexnum); // indexで選択
Select(element).SelectByValue("value"); // valueの値
Select(element).SelectByText("text"); // 表示テキスト
Python
element = driver.find_element_by_xpath("xpath")
Select(element).select_by_index(indexnum) # indexで選択
Select(element).select_by_value("value") # valueの値
Select(element).select_by_visible_text("text") # 表示テキスト
Ruby
element = driver.find_element(:xpath, "xpath")
Select(element).select_by(:index, indexnum) # indexで選択
Select(element).select_by(:value, "value") # valueの値
Select(element).select_by(:text, "string") # 表示テキスト

テキストを入力したいとき

Java
driver.findElement(By.id("ID")).sendKeys("string");
C#
driver.FindElement(By.id("ID")).SendKeys("string");
Python
driver.find_element_by_id("ID").send_keys("strings")
Ruby
driver.find_element(:id, "ID").send_keys("strings")

テキストを取得したいとき

Java
driver.findElement(By.id("ID")).getText();
C#
driver.FindElement(By.id("ID")).Text;
Python
driver.find_element_by_id("ID").text
Ruby
driver.find_element(:id, "ID").text

属性を取得したいとき

Java
driver.findElement(By.id("ID")).getAttribute("value");
C#
driver.FindElement(By.id("ID")).GetAttribute("value");
Python
driver.find_element_by_id("ID").get_attribute("value")
Ruby
driver.find_element(:id, "ID").attribute("value")

アラートをハンドリングしたいとき

Java
driver.switchTo().alert().accept();
C#
driver.SwitchTo().Alert().Accept();
Python
Alert(driver).accept()
Ruby
driver.switch_to.alert.accept

ウインドウサイズを最大にしたいとき

Java
driver.manage().window().maximize();
C#
driver.Manage().Window().Maximize();
Python
driver.maximize_window()
Ruby
driver.manage.window.maximize

要素が表示されているかどうかを判定したいとき

Java
driver.findElement(By.xpath("xpath")).isDisplayed();
C#
driver.FindElement(By.Xpath("xpath")).Displayed(); 
Python
driver.find_element_by_xpath("xpath").is_displayed()
Ruby
driver.find_element(:xpath, "xpath").displayed?

要素が有効かどうかを判定したいとき

Java
driver.findElement(By.xpath("xpath")).isEnabled();
C#
driver.FindElement(By.Xpath("xpath")).Enabled; 
Python
driver.find_element_by_xpath("xpath").is_enabled()
Ruby
driver.find_element(:xpath, "xpath").enabled?

要素が選択されているかどうかを判定したいとき

Java
driver.findElement(By.xpath("xpath")).isSelected();
C#
driver.FindElement(By.Xpath("xpath")).Selected(); 
Python
driver.find_element_by_xpath("xpath").is_selected()
Ruby
driver.find_element(:xpath, "xpath").selected?

おわりに

作っては見ましたが、同じようなものばかりでした。
間違ったものがあればご指摘頂ければ幸いです。
要望があれば随時追加していきます。
他にもみなさんが使う便利なメソッドがあれば教えてください:bow:

1062
1080
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1062
1080

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?