我正在尝试使用Selenium IDE导出的webdriver的Java实现来编写一些Selenium测试来测试Pandora FMS。
初始登录部分工作正常:
driver = new FirefoxDriver();
baseUrl = "http://brmew.lab.brmew.es";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl + "/pandora_console/index.php");
driver.findElement(By.id("nick")).clear();
driver.findElement(By.id("nick")).sendKeys("my");
driver.findElement(By.id("pass")).clear();
driver.findElement(By.id("pass")).sendKeys("credentials");
driver.findElement(By.id("submit-login_button")).click();
然后,有问题的部分,点击菜单。我尝试过最简单的方法:
driver.findElement(By.xpath("//ul[@id='subViews']/li[4]/a/div")).click();
但它不起作用,所以我尝试了:
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@id='subViews']")));
myDynamicElement.click();
您可以在this link中找到我正在测试的HTML(这太大了,无法在此处粘贴)
答案 0 :(得分:1)
你有任何例外吗?您尝试单击的元素submemu项似乎是不可见的。如果它显示在主菜单上单击或鼠标悬停,则需要在对元素执行单击操作之前执行此操作。例如:
//Click main menu to open submenu
driver.findElement(By.xpath(".//*[@id='Views']/div")).click();
//now access submenu
driver.findElement(By.xpath(".//ul[@id='subViews']/li[4]/a")).click();
或者更优选的方式是:
WebElement viewsMenu = driver.findElement(By.xpath(".//*[@id='Views']/div"));
viewsMenu.click();
//or mouse over
Actions action = new Actions(webdriver);
action.moveToElement(viewsMenu).build().perform();
//now access submenu
viewsMenu.findElement(By.xpath(".//ul[@id='subViews']/li[4]/a")).click();
答案 1 :(得分:0)
从您给定的链接,我无法找到监控>意见>代理商细节 但似乎首先你必须点击
monitoring and than wait
而不是点击
views and wait
而不是点击你的
agent detail
鼠标悬停使用以下代码
//get element as ur wish by css or xpath or id
WebElement elem = driver.findElement(By.cssSelector("ur locator"));
Actions builder = new Actions(driver);
builder.moveToElement(elem).perform();
makeWait(5);
比显示元素后,再次获取下一个元素并使用代码进行悬停。