3

これは、別のクラスから関数を呼び出す私のメソッドです Selenium Setup が定義されています。

public void Transfer() throws Exception {
System.out.println("\nTransfer\n");
    selenium.open("/logon/user");
    selenium.windowMaximize();
    login obj1 = new login();
    obj1.testlogin();
            selenium.click("link=TRANSFERS");
    selenium.waitForPageToLoad("80000");

これは、上記の呼び出し元に対して実行する関数を持つ別のクラスです。上記のセットアップ関数には、ライブラリで呼び出されるはずのセレンオブジェクトがあります。

public class login extends SeleneseTestCase{


public void testlogin(){


    System.out.println("\nLogin\n");    
    selenium.type("companyID", "abcd");
    selenium.type("j_username", "xyz");
    selenium.type("j_password", "123456");
    selenium.click("submit_logon");
    selenium.waitForPageToLoad("80000");

    }
}   

次のエラーが表示されます

1) Transfer(test)java.lang.NullPointerException
    at login.testlogin(login.java:12)
    at test.Transfer(test.java:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.j

ava:212) で SampleSuite.main(SampleSuite.java:25)

ログインのようなすべての関数をライブラリに保存しようとしていて、スイートで必要に応じてそれらを呼び出したいのですが、呼び出された関数にセレンブラウザのポインタを渡すことができません

誰でもエラーを解決するのを手伝ってもらえますか

次のようにコードを設定します。

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

すべてに前もって感謝します

4

1 に答える 1

1

簡単にするために、基本的にSeleniumオブジェクトをtestlogin(Selenium selenium)に1回渡すか、Selenium = globalinstanceの静的変数を作成して変数に割り当て、使用するクラスでラッパーを作成できますtestlogin{selenium グローバルインスタンス}. これが簡単な解決策として役立つことを願っています。

于 2012-06-19T09:29:42.770 に答える