Duang!duangduang!把文章改成了原创,因为在群里得到了一个朋友的support, 所以有了这个解决方案,在我的gui 上面可以完美解决,列出来给大家做参考。
<span style="white-space:pre"> </span> mouseElement(By.xpath("//*[@id='904100']/span"), By.xpath("//*[@id='904130']/span") );
<pre name="code" class="java">
public WebDriver mouserElement(WebDriver driver,By by1,By by2)
{
Actions actions = new Actions(driver);
//点击主菜单
actions.moveToElement(driver.findElement(by1)).perform();
//JS脚本,点击二级菜单
WebElement men_element = driver.findElement(by2);
JavascriptExecutor JS =(JavascriptExecutor)driver;
JS.executeScript("arguments[0].click();", men_element);
return driver;
}
=======================================================================================================
以下部分为网上各类方法 转载过来 大多都试过, 我都失败了
========================================================================================================
在自动化测试过程中,由于javascript的使用,我们常常需要点击一些鼠标经过显示的菜单等元素,这时需要触发该元素的鼠标经过事件。使用WebDriver有以下两种实现。
1.使用Action
- public void moveToElement(WebDriver driver, By locator) {
- Actions builder = new Actions(driver);
- builder.moveToElement(driver.findElement(locator)).perform();
- }
2.使用Sendkey
- public void moveToElement(WebDriver driver, By locator) {
- driver.findElement(locator).sendKeys(Keys.DOWN);
- }
说明:具体使用什么key,可以根据实际情况变化。例如左侧菜单可能是使用右箭头可以呼出子菜单。则应该使用Keys.RIGHT
Webdriver操作是很迅速的,假如一次moveTo你无法看到或者是无法进行操作,可以加上循环便可以达到效果。
========================================================================================================