Java
Ruby
Python
C#
selenium-webdriver
OriginalLIFULLDay 20

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);
acrions.perform();
C#
var element = driver.FindElement(By.id("ID"));
Actions actions = new Actions(driver);
actions.MoveToElement(element);
actions.Perform();
Python
element = driver.find_element_by_id("ID")
actions = new Actions(driver)
actions.move_to_element(element)
actions.perform()
Ruby
driver.find_element(:id, "ID").location_once_scrolled_into_view

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

Java
element = driver.findElement(By.xpath("xpath"));
Select(element).selectByIndex(indexnum); // indexで選択
Select(element).selectByValue("value"); // valueの値
Select(element).selectByText("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_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: