将鼠标悬停在亚马逊的下拉菜单上

Hover over dropdown menu in Amazon

我只想将鼠标悬停在亚马逊网站上的 "Departments" 下拉列表上。代码看起来不错,但列表没有显示。这是我要显示的部门下拉列表

这是我的代码

    driver = new ChromeDriver();
    driver.get("https://www.amazon.com");
    Actions actions = new Actions(driver);
    WebElement ele = driver.findElement(By.xpath("//span[@class='nav-line-2']"));
    Thread.sleep(300);
    actions.moveToElement(ele);
    actions.perform();
    actions.perform();

看起来 xpath 不是唯一的并且具有相同的定位器,在页面中定位 6 个元素。当我们有多个具有相同定位器的元素时,硒会成为第一个元素。在您的情况下,不幸的是 'Departments' 不是具有该定位器的第一个元素。

将您的 xpath 更改为以下内容:[已测试并有效]

//span[@class='nav-line-2' and contains(.,'Departments')]

鼠标悬停在文本为Departments的元素上,您需要引入WebDriverWait要使所需的 元素可见 并结合使用 moveToElement() 方法和 perform() 方法,您可以使用以下解决方案:

  • 代码块:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.interactions.Actions;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class amazon_com_Departments {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("start-maximized");
            WebDriver driver =  new ChromeDriver(options);
            driver.get("https://www.amazon.com");
            WebElement department = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@id='nav-link-shopall' and normalize-space()='Departments']")));
            new Actions(driver).moveToElement(department).perform();
        }
    }
    
  • 浏览器快照: