我在运行程序时收到以下提到的错误消息。
错误:指针操作的类型参数缺失或无效。
我试图点击鼠标悬停在主菜单上时显示的子菜单。
以下代码:
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();
}
}
请协助!
答案 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。