我试图将鼠标移到此处。如果我徘徊在女性身上,我们可以看到不同的子菜单。我想点击其中任何一个。 以下是代码
public static void main(String[] args) throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", "D://chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.get("http:obsessory.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
System.out.println("ok");
Thread.sleep(1000);
Actions action = new Actions(driver);
WebElement we = driver.findElement(By.xpath(".//*[@id='nav']/li[2]/a"));
WebElement ve =driver.findElement(By.xpath(".//[@id='nav']/li[2]/ul/li/div[2]/ul/li[2]/a"));
action.moveToElement(we).click(ve).perform();
}
答案 0 :(得分:0)
尝试按照以下方式构建您的操作:
action.moveToElement(we).moveToElement(ve).click(ve).perform();
对您的代码的一般建议很少:
将chromedriver添加到系统路径中,这样您就不必在每次测试中使用System.setProperty("webdriver.chrome.driver", "D://chromedriver.exe");
。也可以使用显式等待而不是隐式等待,并且永远不要在代码中使用thread.sleep。
答案 1 :(得分:0)
这是一个工作示例,点击菜单"女人"并链接"裤子":
WebDriver driver= new ChromeDriver();
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.ignoring(WebDriverException.class);
driver.get("http://obsessory.com/");
// mouse over the main menu "Women"
WebElement menu = driver.findElement(By.xpath("id('nav')//a[.='Women']"));
new Actions(driver).moveToElement(menu).perform();
// click the link "Trousers" until succeed
WebElement link = menu.findElement(By.xpath("..//a[.='Trousers']"));
wait.until((WebDriver wd)->{
link.click();
return true;
});
答案 2 :(得分:-1)
如果提供的答案不起作用,那么你可以尝试移动到元素,等等然后点击如下。
action.moveToElement(we).build().perform();
Thread.sleep(1000);
driver.findElement(By.xpath(".//[@id='nav']/li[2]/ul/li/div[2]/ul/li[2]/a")).click();
一般情况下,我会将鼠标指针移出屏幕,以便这些鼠标移动动作效果很好。
谢谢你, 穆拉利