将鼠标悬停在Amazon的下拉菜单中

时间:2018-10-28 17:58:52

标签: java selenium selenium-webdriver action webdriverwait

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

这是我的代码

    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();

2 个答案:

答案 0 :(得分:1)

看起来 xpath 不是唯一的,并且具有相同的定位符,可以在页面中定位6个元素。当我们有多个具有相同定位符的元素时,硒将成为第一个元素。就您而言,不幸的是,“部门”并不是该定位器的第一个元素。

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

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

PS:在学习硒之前,请先学习xpath和CSS教程。

答案 1 :(得分:0)

要在文本为部门的元素上将鼠标悬停,您需要诱使 WebDriverWait 使所需的元素可见< / em>并结合使用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();
        }
    }
    
  • 浏览器快照:

amazon_hover_Department