Help us understand the problem. What is going on with this article?

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

はじめに

こんにちは。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:

mochio
lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした