selenium-webdriver
基本的なSelenium Webdriverプログラム
サーチ…
前書き
このトピックでは、C#、Groovy、Java、Perl、PHP、Python、Rubyなどのセレンサポート言語の基本的なWebドライバプログラムを紹介します。
Journeyには、ブラウザのドライバを開く - > Googleページ - >ブラウザをシャットダウンする
C#
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace BasicWebdriver
{
class WebDriverTest
{
static void Main()
{
using (var driver = new ChromeDriver())
{
driver.Navigate().GoToUrl("http://www.google.com");
}
}
}
}
上記の「プログラム」はGoogleホームページにナビゲートし、ページを完全に読み込んだ後にブラウザを終了します。
using (var driver = new ChromeDriver())
これにより、 IWebdriver
インターフェイスを使用して新しいWebDriverオブジェクトがインスタンス化され、新しいブラウザウィンドウインスタンスが作成されます。この例では、 ChromeDriver
を使用していChromeDriver
(これは、使用したいブラウザ用の適切なドライバに置き換えることができます)。 IWebDriver
はIDisposable
実装しているため、 using
ステートメントでこれをラップしています。このため、明示的にdriver.Quit();
入力する必要はありませんdriver.Quit();
。
NuGetを使用してWebDriverをダウンロードしていない場合は、ドライバ自身のchromedriver.exeが置かれているディレクトリへのパス形式で引数を渡す必要があります。
ナビゲート
driver.Navigate().GoToUrl("http://www.google.com");
そして
driver.Url = "http://www.google.com";
これらの行はどちらも同じことをします。ドライバは特定のURLに移動し、ページがロードされるのを待ってから次のステートメントに移動するように指示します。
Back()
、 Forward()
、 Refresh()
など、ナビゲーションに関連する他のメソッドがあります。
その後、 using
ブロックは安全に終了し、オブジェクトを破棄します。
Python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
def get_google():
driver = set_up_driver()
driver.get('http://www.google.com')
tear_down(driver)
def tear_down(driver):
driver.quit()
if '__main__' == __name__:
get_google()
上記の「プログラム」はGoogleのホームページに移動し、完了する前にブラウザを終了します。
if '__main__' == __name__:
get_google()
最初に、 get_google()
を呼び出すプログラムへの参入ポイントという主な機能があります。
def get_google():
driver = set_up_driver()
get_google()
その後、私たちの作成することで開始しdriver
を経由してインスタンスをset_up_driver()
:
def set_up_driver():
path_to_chrome_driver = 'chromedriver'
return webdriver.Chrome(executable_path=path_to_chrome_driver)
chromedriver.exe
がどこにあるかをchromedriver.exe
、ドライバオブジェクトをこのパスでインスタンス化します。 get_google()
の残りの部分がGoogleに移動します。
driver.get('http://www.google.com')
そしてドライバオブジェクトを渡すtear_down()
を呼び出します:
tear_down(driver)
tear_down()
にはドライバオブジェクトをシャットダウンするための行が1つだけ含まれています:
driver.quit()
これはドライバーに、開いているブラウザーウィンドウをすべて閉じ、ブラウザーオブジェクトを破棄するように指示します。この呼び出しの後に他のコードがないので、プログラムを効果的に終了します。
Java
以下のコードはすべて約3つのステップです。
- クロームブラウザを開く
- Googleのページを開く
- ブラウザをシャットダウンする
import org.openqa.selenium;
import org.openqa.selenium.chrome;
public class WebDriverTest {
public static void main(String args[]) {
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
driver.quit();
}
}
上記の「プログラム」はGoogleのホームページに移動し、完了する前にブラウザを終了します。
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
最初の行は、 ChromeDriver
(chromedriver.exe)実行可能ファイルがどこにあるかをシステムに通知します。次に、 ChromeDriver()
コンストラクタを呼び出してドライバオブジェクトを作成します。ここでも、任意のブラウザ/プラットフォーム用コンストラクタを呼び出すことができます。
driver.get("http://www.google.com");
これは、ドライバに指定されたURL http://www.google.comに移動するように指示します 。 Java WebDriver APIはWebDriverインターフェイス上に直接get()
メソッドを提供しますが、 navigate()
メソッドdriver.navigate.back()
使用してさらなるナビゲーションメソッドを見つけることができます。
ページの読み込みが完了したら、すぐに次の呼び出しを行います。
driver.quit();
これは、この呼び出しの後に他のコードがないので、開いているすべてのブラウザウィンドウを閉じてドライバオブジェクトを破棄するようにドライバに指示します。
driver.close();
この例では、命令が同じ結果をquit()
を呼び出す原因となる単一のウィンドウしか持たないので、この例では、アクティブなウィンドウのみを閉じるように命令(ここには示されていません)がドライバにあります。
Java - ページクラスを使用したベストプラクティス
ユースケース:FBアカウントにログイン
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class FaceBookLoginTest {
private static WebDriver driver;
HomePage homePage;
LoginPage loginPage;
@BeforeClass
public void openFBPage(){
driver = new FirefoxDriver();
driver.get("https://www.facebook.com/");
loginPage = new LoginPage(driver);
}
@Test
public void loginToFB(){
loginPage.enterUserName("username");
loginPage.enterPassword("password");
homePage = loginPage.clickLogin();
System.out.println(homePage.getUserName());
}
}
ページクラス:ログインページとホームページログインページクラス:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class LoginPage {
WebDriver driver;
public LoginPage(WebDriver driver){
this.driver = driver;
}
@FindBy(id="email")
private WebElement loginTextBox;
@FindBy(id="pass")
private WebElement passwordTextBox;
@FindBy(xpath = ".//input[@data-testid='royal_login_button']")
private WebElement loginBtn;
public void enterUserName(String userName){
if(loginTextBox.isDisplayed()) {
loginTextBox.clear();
loginTextBox.sendKeys(userName);
}
else{
System.out.println("Element is not loaded");
}
}
public void enterPassword(String password){
if(passwordTextBox.isDisplayed()) {
passwordTextBox.clear();
passwordTextBox.sendKeys(password);
}
else{
System.out.println("Element is not loaded");
}
}
public HomePage clickLogin(){
if(loginBtn.isDisplayed()) {
loginBtn.click();
}
return new HomePage(driver);
}
}
ホームページクラス:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class HomePage {
WebDriver driver;
public HomePage(WebDriver driver){
this.driver = driver;
}
@FindBy(xpath=".//a[@data-testid='blue_bar_profile_link']/span")
private WebElement userName;
public String getUserName(){
if(userName.isDisplayed()) {
return userName.getText();
}
else {
return "Username is not present";
}
}
}