ページオブジェクトがどのようなものです:
PageオブジェクトはSelenium2が設けられたスタートコードのデザインモードでページの要素がある場合。核となるアイデアは、、更新、およびその変更のメンテナンス後。分離テストページとWebページの要素と操作を見つけるために、テストクラスを修正する必要はありませんただ、対応するページ要素を見つけるために、コードを変更します。
163 Eメールログイン含まれます。
どこで:
1. LoginPage.java要素実現ログインを動作させる要素を含む探し、主要なテストページです
2. HomePage.javaは、ログインが成功した後のページにジャンプし、戻り値とログインを確認するためにこれを取るだろうが、操作のログイン方法として成功した要素である、これはテストページの以上であってもよいです
3. LoginTest.javaは、検証ログイン成功/失敗、または他のテストケースを含むことができ、テストのログインページを実行するために使用します
この方法は、別のブラウザを扇情できるドライバから使用4. SeleniumInit.java、
サンプルコード:
LoginPage.java
1つの インポートorg.openqa.selenium.By。 2 インポートorg.openqa.selenium.WebDriver。 3 輸入org.openqa.selenium.WebElement。 4 インポートjava.util.Listに。 5 輸入java.util.concurrent.TimeUnit。 6 7 パブリック クラスLoginPage { 8 webdriverをドライバ。 9 10 パブリックLoginPage(webdriverをドライバ){ 11 この = .driver ドライバ。 12 } 13 14 // 登录方法 15 公衆ホームページログイン(文字列のユーザは、文字列PWD){ 16 // 隐式等待页面的加载 17 driver.manage()タイムアウト()implicitlyWait(10。。、TimeUnit.SECONDS)。 18 WebElement accountLogin = driver.findElement(By.id( "lbNormal" )); 19 accountLogin.click()。 20 // 进入フレーム 21 リスト<WebElement>インラインフレーム= driver.findElements(By.tagName( "IFRAME" ))。 22 文字列ID = iframes.get(0).getAttribute( "ID" )。 23 であれば(!ID = NULL ){ 24 。driver.switchTo()フレーム(ID)。 25 } 26は WebElement loginEmail = driver.findElement( "メールで送信" By.name( )); 27 WebElement LOGINPASSWORD = driver.findElement(By.name( "パスワード" )); 28 WebElement loginButton = driver.findElement(By.id(「doLogin " )); 29 loginEmail.sendKeys(ユーザ); 30 loginPassword.sendKeys(PWD) 31がある loginButton.click(); 32 // ジャンプフレーム 33である driver.switchTo()defaultContentは();. 34である )(driver.manage。 。タイムアウト()implicitlyWait(10 、TimeUnit.SECONDS); 35 // 成功したログインページの後に新しい要素にジャンプするには、現在のページの新しいページと処理と分離 36 返す 新しいホームページ(ドライバ)。 37 } 38 }
HomePage.java
1 インポートorg.openqa.selenium.By; 2 インポートorg.openqa.selenium.WebDriver; 3 インポートorg.openqa.selenium.WebElement; 4 。5つの パブリック クラスホームページ{ 6。 webdriverをドライバー; 7 。8 パブリックホームページ(webdriverをドライバ){ 9。 この .driver = ドライバ; 10 } 11 12である // ログイン成功した方法、メールが現在のページに類似してプラスの方法ができたか否かを判断 13である パブリック ブールidExists(){ 14 WebElementユーザーID = driver.findElement(By.id(「spnUid」)); 15 のSystem.out.println(userID.getText())。 16 リターンuserID.isDisplayed()。 17 } 18 }
LoginTest.java
1つの インポートorg.openqa.selenium.WebDriver。 2 インポートorg.openqa.selenium.support.PageFactory。 3 輸入org.testng.Assert。 4 インポートorg.testng.annotations.Test。 5 輸入po.selenium.pages.HomePage。 6 インポートpo.selenium.pages.LoginPage。 7 インポートpo.selenium.utils.SeleniumInit。 8 9 パブリック クラスLoginTest { 10 文字列のURL = "https://mail.163.com/" 。 11 @Test 12 公共 ボイドTC001_LoginSuccess(){ 13 文字列のユーザ= "邮箱账号" 。 14 文字PWD = "邮箱密码" 。 15 SeleniumInit seleniumInit = 新しいSeleniumInit()。 16 webdriverをドライバ= seleniumInit.getFFDriver()。 17 試み{ 18 driver.get(URL)。 19 LoginPage loginPage = 新しいLoginPage(ドライバ) 20 PageFactory.initElements(ドライバ、loginPage)。 21 ホームページホームページ= loginPage.login(ユーザ、PWD)。 22 Assert.assertTrue(homePage.idExists()、 "ログインに失敗しました"); 23である } キャッチ(例外E){ 24 ; e.printStackTrace() 25 } 最後に{ 26である )(driver.quit; 27 } 28 } 29 30 @Test 31は 公共 ボイドTC002_LoginFailedWithWrongPwd(){ 32 ストリングユーザー=「メールアカウント" ; 33は、 「エラーメールパスワード文字列のPWD =" ; 34である seleniumInit seleniumInit = 新しい新しいseleniumInit(); 35 webdriverをドライバ=seleniumInit.getFFDriver(); 36 試み{ 37 [ driver.get(URL); 38である LoginPage LoginPage = 新しい新しいLoginPage(ドライバ); 39 PageFactory.initElements(ドライバ、LoginPage); 40 // 同じページ、同じ方法を様々にすることができ試験 41は ホームページのホームページ= loginPage.login(ユーザー、PWD) 42は Assert.assertTrue(homePage.idExists()、 "ログインに失敗しました" ); 43れる } キャッチ(例外E){ 44は e.printStackTrace(); 45 } ついに{ 46 driver.quit(); 47 } 48 } 49 }
これらは、すべてのソリューションの後、URLこのような情報は、問題を露出し、他され、主に思考のページ分離を表示するために使用される思考の分離の操作とテストとPageオブジェクトのページは、同様のページ要素が存在しており、作動一緒に結合されています。