2011-07-26 10 views
1

セレンの半分のコードを持つ他のファイルにセレンを変換するにはどうすればいいですか?Seleniumを別のクラスに呼び出す方法:NullPointerException

PHPでは、次のコードを使用できます。

login($this); ---->login($sel){ ..... }

私のセレンの設定を1つのファイルであり、それを使用する関数は、別のファイルである私が通り、我々は他にセレンを渡すことができるように私はJavaで同じことを行うことができますNullPointerExceptionを取得します。
これに関連する詳細をご希望の場合はお知らせください。私の観測セレンインスタンスごととして

更新

Library.java

public class Library extends SeleneseTestCase { 
    public int Login() throws Exception { 

     if (selenium.isElementPresent("companyID")) { 
      selenium.type("companyID", "COMP"); 
      selenium.click("submit_logon"); 
      selenium.waitForPageToLoad("80000"); 
     } 
    } 
} 

Login.java

public class Login extends Library { 

    @Before 
    public void setUp() throws Exception { 
     selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://businessbanking.com/"); 
     selenium.start(); 
    } 

    public void testAllTests() throws Exception { 
     Library obj1 = new Library(); 
     obj1.Login(); 
    } 
} 

図書館宛でないログインファイルで開始。私はパラメータとして "セレン"を渡そうとしましたが、失敗しました。ライブラリで "super.setUp()"を試みましたが失敗しました。

ありがとうございました。

+0

コードを投稿してください。可能であれば、問題を示しているものを単純化したものの、それを再現するコードがあれば役立ちます。 –

+0

@Samir Talwar:呼び出しがライブラリに送信されたコードを掲載しました。また、実行中にNullPointerExceptionを返すセレンの行についても掲載しました。 – lAH2iV

答えて

2

置き換えます

public void testAllTests() throws Exception { 
    Library obj1 = new Library(); 
    obj1.Login(); 
} 

をして:

public void testAllTests() throws Exception { 
    super.Login(); 
} 

あなたのログインクラスがすでにライブラリが、それはすでにそれに存在するログイン()メソッドを持って拡張しているので。あなたが現在行っているのは、@Beforeを実行しない新しいライブラリオブジェクトを作成することで、Seleniumフィールドは(新しいオブジェクト内で)初期化されません。

サブクラスが基本クラスを継承する場合、サブクラスはそのメソッドを継承します。これは基本的なJavaとOOPの概念です。

+0

ありがとう本当に私が逃した良い答えは私は周りの多くの仕事をして、私はセットアップのためにこのスーパーを使用するために使用し、多くのおかげで失敗に使用されます。同じことについて私が尋ねたいことは、複数のライブラリを同じように5〜6個のライブラリを持つように拡張することができ、同じものを使用できるようになるかどうかということです。 – lAH2iV

+0

Javaでは、単一のベースクラスを拡張することしかできません。インタフェースはおそらくあなたが調べたいものです。インターフェイスを実装するには、インターフェイスに定義されているすべてのメソッドを実装する必要があります。 –

+0

あなたの提案は、私はインターフェイスのクラスと異なるクラスのそれらの実装を作成する必要があります。次に、実装されたクラスから関数にアクセスできるように、インターフェイスクラスを拡張する必要があります。間違っている場合は、同じことを例に挙げてください。 – lAH2iV

関連する問題