1

Eclipse の JUnit で Selenium Web Driver を使用しています。反復可能なステップ用の新しいクラスを作成して、コードを減らしたいです。便宜上、このクラスを別のファイルに保存したいと思います。たとえば、このようなクラスの 1 つ:

import org.openqa.selenium.ie.InternetExplorerDriver;

 //Login
public class Login {
private InternetExplorerDriver driver;

String url;
String name;
String password;
String language;
public Login (String ur, String nam, String pass, String lang){
    url=ur;
    name=nam;
    password=pass;
    language=lang;
}
 public void log_in (){
 driver.get(url);
 driver.findElement(By.name("username")).sendKeys(name);    
 driver.findElement(By.name("password")).sendKeys(password);    
 driver.findElement(By.name("language")).sendKeys(language);    
 driver.findElement(By.name("logon_action")).click(); 
  }  
  }

これは私の主なテストです:

package bobsworld;

import init.Login;

import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;


public class WebTest {
private WebDriver driver;


@Test
public void testUnit() throws Exception {

//Open new window
System.setProperty("webdriver.ie.driver", "IEDriverServer.exe");
driver = new InternetExplorerDriver();

//Login 
init.Login login = new init.Login ("myurl", "log","pas","English");
  login.log_in();
}

問題はオブジェクト ドライバにあります。java.lang.NullPointerExceptionテストを実行できません。テストを機能させるには、ログインとコードの呼び出しをどのように編成すればよいですか?

4

1 に答える 1

2

あなたが達成しようとしているのは、「PageObjects」と呼ばれる非常に人気のあるアプローチです。

あなたの問題:

  1. コードの品質を向上させるために何らかのチェックスタイル ツールを使用する

  2. Java 全般について多くの調査を行う

  3. ログイン クラスまたは「init.Login」(クラスのプレフィックスとしてパッケージの一部を使用することは非常にまれです) は、転送しないため、同じ WebDriver インスタンスを使用できません。通常、2 番目の WebDriver インスタンスを開く必要がありますが、セットアップがわかりませんが、それは不可能のようです。「ドライバー」をパラメーターとして Login クラスのコンストラクターに転送する必要があります。

  4. ここで説明されているように、PageFactory を含む実際の PageObjects を使用して、読みやすさと保守性を向上させてください。

于 2012-07-18T18:40:28.953 に答える