指针操作的类型参数缺失或无效 - Selenium

时间:2017-05-02 07:05:37

标签: java eclipse selenium-webdriver

我在运行程序时收到以下提到的错误消息。

  

错误:指针操作的类型参数缺失或无效。

我试图点击鼠标悬停在主菜单上时显示的子菜单。

以下代码:

public class ActionKeywords {
    WebDriver driver = new FirefoxDriver();

    @Test
    public void openBrowser(){
        driver.get("https://www.levissima.it/");
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.manage().window().maximize();
    }
    @Test
    public void verify_Menus(){

        WebElement mainMenu = driver.findElement(By.xpath("//ul[@id='menu-main']/li/a"));

        WebElement subMenu = driver.findElement(By.xpath("//a[contains(text(),'Impegno Per La Natura')]"));
        Actions action = new Actions (driver);
        action.moveToElement(mainMenu).perform();
        action.click(subMenu).perform();
    }
}

请协助!

3 个答案:

答案 0 :(得分:0)

实现此click()的一个更好方法是:

    Actions action = new Actions (driver);
    action.moveToElement(mainMenu).moveToElement(subMenu).click().build().perform();

这称为行动链接。

答案 1 :(得分:0)

使用Selenium 3.4.0与Mozilla Firefox浏览器53.x配合使用,您需要从here下载最新的geckodriver。将其保存在您的机器中提供geckodriver的绝对路径。通过对您自己的代码进行一些简单的调整,此代码可以正常执行。

WebDriver driver;

@BeforeTest
public void setup()
{
    System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
    DesiredCapabilities dc = DesiredCapabilities.firefox();
    dc.setCapability("marionette", true);
    driver =  new FirefoxDriver(dc);
    driver.manage().window().maximize();
}

@Test
public void openBrowser(){
    driver.get("https://www.levissima.it/");
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    driver.manage().window().maximize();
}
@Test
public void verify_Menus(){

    WebElement mainMenu = driver.findElement(By.xpath("//ul[@id='menu-main']/li/a"));

    WebElement subMenu = driver.findElement(By.xpath("//a[contains(text(),'Impegno Per La Natura')]"));
    Actions action = new Actions (driver);
    action.moveToElement(mainMenu).perform();
    action.click(subMenu).perform();
}

输出结果为:

PASSED: openBrowser
PASSED: verify_Menus

===============================================
    Default test
    Tests run: 2, Failures: 0, Skips: 0
===============================================

如果这回答了你的问题,请告诉我。

答案 2 :(得分:0)

我今天遇到了这个错误,并使用另一个geckodriver版本解决了它。在那种情况下(Firefox 52 + Selenium 3.8.0),geckodriver 0.15解决了它。

这不是我第一次被迫下载并尝试不同版本的Firefox / Geckodriver / Selenium。

默认情况下,下载最新的geckodriver无法解决问题。根据您的Firefox和geckodriver版本,您可能需要更旧的版本,因此,请不要犹豫,而不是仅仅获取最新版本,希望它能够神奇地工作。

我真的建议在变得疯狂之前尝试不同的geckodrivers。