はじめに
こんにちは。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?
おわりに
作っては見ましたが、同じようなものばかりでした。
間違ったものがあればご指摘頂ければ幸いです。
要望があれば随時追加していきます。
他にもみなさんが使う便利なメソッドがあれば教えてください