2017-08-30 4 views
0

みなさん、こんにちは私は私が今クラス私は、nullポインタ例外を取得していますオープンウェブサイト上で操作を実行しようとしていたときに

utility package  

public class Utils   
{ 
    public static void openBrowser(WebDriver driver,String url)    
    {    
     System.out.println("Internet Explorer is selected");   

     System.setProperty("webdriver.ie.driver","D:\\Requirede for Automation\\IEDriverServer.exe");   
     driver = new InternetExplorerDriver();    
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);  
     driver.manage().window().maximize();   
     driver.get(url);  
    }  
}       

私は上記のクラス以下の1作成した下で1つのユーティリティパッケージを作成しました私のメインのオートメーションパッケージにアクセスしようとしているが、そうすることができるが、開いているWebサイトで操作を実行しようとしているときに、nullポインタの例外が発生するので、クラスを呼び出す正しい方法は何か教えてそれに対する操作。インターネットエクスプローラを選択する

下にエラーが受信

public class dropdown 
{   

    WebDriver driver;     

    @Test  
    public void openBrowser() {   

     String url = ("https://loadfocus.com/blog/2016/06/13/how-to-select-adropdown-in-selenium-webdriver-using-java");            

     WebDriver driver = null;         
     utility.Utils.openBrowser(driver, url);             
    }       

    @Test          

    public void open() 
    {             

     Select dropdown = new Select(driver.findElement(By.id("mySelect")));           
     dropdown.selectByIndex(2);               
    }             
}              

は、ポート18171のlog4jにリスニングInternetExplorerDriverサーバ (32ビット) 2.39.0.0開始しました:なしアペンダはロガー(ORGは見つかりませんことができるWARN。 apache.http.client.protocol.RequestAddCookies)。 log4j:WARN log4jシステムを適切に初期化してください。 log4j:WARN詳細は http://logging.apache.org/log4j/1.2/faq.html#noconfigを参照してください。 2017年8月30日1時54分35秒PM org.openqa.selenium.remote.ProtocolHandshake のCreateSession INFO:検出方言:OSSはPASSED:openBrowserに失敗しました: オープンのjava.lang.NullPointerExceptionを automationFramework.dropdown.open(ドロップダウンで。 Javaの:45) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で、 (java.lang.reflect.Mava.498)at

答えて

-1

Add IEDriverS

Cでerver.exe:\ WINDOWS \ System32に

、マシンを再起動します。それは正常に実行されます。

0

あなたがopenBrowser()メソッドを呼び出しているときにWebDriver driver = nullを保持しているので、あなたがnullとしてdriverを送信しているので、あなたはNullPointerExceptionを見ています。

質問の解決方法は、WebDriverインスタンスを初期化し、テストクラスのクラスのInternetExplorerDriverにキャストすることです。あなたが必要と

変更点は次のとおりです。

  • クラスdropdown

    WebDriver driver = new InternetExplorerDriver(); //add the cast         
    utility.Utils.openBrowser(driver, url); 
    
  • クラスUtils

    System.setProperty("webdriver.ie.driver","D:\\Requirede for Automation\\IEDriverServer.exe");   
    // remove "driver = new InternetExplorerDriver();"    
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    
+0

ありがとうございましたansがありがとうございますが、これは私が書いたコードをウェブサイトで開くことができるので、私にとってはうまくいきません。しかしその後、私はそのウェブサイト上で何らかの操作を実行することができません –

+0

@HaRiShBishtあなたの質問では、開いたウェブサイトで操作を実行しようとしているときに私はヌルポインタ例外を取得しています。投票の上/下ボタンのすぐ下の私の答えの横にある目盛りをクリックして「回答」を「受け入れてください」。あなたはいつもあなたの新しい要件で新しい質問を提出することができます。ありがとう – DebanjanB

0

それは本当に何のように見えますあなたのコードに基づいてやりたいのは、あなたのopenBrowser()メソッドがセットアップメソッドであることです。現在open()メソッドはNPEを使用していないopenBrowserメソッドによって初期化されたドライバのローカルインスタンスを持っています。次を試してください

@Before 
public void openBrowser() { 
    String url = ("https://loadfocus.com/blog/2016/06/13/how-to-select-adropdown-in-selenium-webdriver-using-java");            

    driver = utility.Utils.openBrowser(driver, url); 
} 

@Test 
public void open() { 
    Select dropdown = new Select(driver.findElement(By.id("mySelect")));           
    dropdown.selectByIndex(2); 
} 

これはまた、UtilsクラスのopenBrowser()がブラウザのインス​​タンスを返す必要があります。実際にはドライバを初期化してインスタンスを返すUtilsクラスに静的メソッドを持たせることを検討しますが、それはクラスの設計方法にあります。

@すべてのテストの前に実行する前に、@BeforeMethodまたは@BeforeClassを使用することをお勧めします。また、TestNGとJUnitのどちらを使用しているかによっても異なりますが、どちらのマニュアルも参考にする必要があります。

関連する問題