簡體   English   中英

Selenium DoubleClick WebElement導致錯誤

[英]Selenium DoubleClick WebElement causing Error

我正在使用下面的代碼來激發雙擊鼠標的按鈕,但是,我遇到了一個編譯錯誤,該錯誤指向操作,但是我沒有解決方法。

Actions act = new Actions(driver);
    act.doubleClick(driver.findElement(By.id("dijit_form_Button_0_label"))).build().perform();
    logger1.info("Logout Successful");

org.testng.TestNGException: 
Cannot instantiate class testNG.RAD3398LogoutTwiceTest
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
    ... 21 more
Caused by: java.lang.NullPointerException
    at org.openqa.selenium.interactions.Actions.<init>(Actions.java:44)
    at testNG.RAD3398LogoutTwiceTest.<init>(RAD3398LogoutTwiceTest.java:25)
    ... 26 more

有任何想法嗎?

您可以嘗試使用javascript觸發doubleclick事件。 這是我從硒觸發click事件的方法,我想您可以將其調整為觸發doubleclick

    public static void phantomClick (WebDriver driver, WebElement element){
        final String script = "function ghostclick(el){var ev = document.createEvent(\"MouseEvent\");ev.initMouseEvent(\"click\",true ,true,window,null,0,0,0,0,false,false,false,false,0,null);el.dispatchEvent(ev);} return ghostclick(arguments[0])";
        ((JavascriptExecutor) driver).executeScript(script, element);
    }   

TestNGException不是編譯錯誤。 它是TestNG拋出的RuntimeException 在這種情況下,TestNG引發了異常,因為它無法“實例化類testNG.RAD3398LogoutTwiceTest”。

原因如下:

Caused by: java.lang.NullPointerException
    at org.openqa.selenium.interactions.Actions.<init>(Actions.java:44)
    at testNG.RAD3398LogoutTwiceTest.<init>(RAD3398LogoutTwiceTest.java:25)

這意味着在初始化/構造RAD3398LogoutTwiceTest的實例時,將調用Actions的構造函數,然后在第44行上拋出NullPointerException

如果您看一下Actions.java:44,您將看到this.mouse = ((HasInputDevices) driver).getMouse(); 即初始化失敗,因為drivernull

確保任何語句,例如new Actions(driver); driver初始化后發生,否則您的測試類將無法初始化,並且TestNG將引發異常。

解決此問題后,應執行雙擊語句。

替代解決方法源

簡化為:

((JavascriptExecutor) driver).executeScript("document.getElementById('map_container').dispatchEvent(new Event('dblclick'));"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM