Edited at
LIFULLDay 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);
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: