【问题标题】:Mouse over element to reveal and click hidden element将鼠标悬停在元素上以显示并单击隐藏元素
【发布时间】:2015-09-18 11:07:16
【问题描述】:

在 C# 中使用 Selenium Webdriver 我需要将鼠标悬停在一个元素上,然后显示隐藏元素的菜单,然后我需要单击一个以前隐藏的元素。我无法单击显示菜单的元素,因为这将重定向到另一个页面。

动作:

  1. 将鼠标悬停在“我的帐户”菜单项上可显示隐藏元素(不得点击此元素)
  2. 找到并单击在第 1 步中显示的“更新详细信息”元素。

但是,我正在使用以下代码;它会引发“更新详细信息”元素的元素未找到异常。

Actions action = new Actions(driver);
IWebElement MegaMenu = driver.FindElement(By.CssSelector("#tab-overview"));
action.MoveToElement(MegaMenu).Build().Perform();
action.MoveToElement(driver.FindElement(By.LinkText("Update my details"))).Click().Build().Perform();

【问题讨论】:

    标签: c# selenium-webdriver


    【解决方案1】:

    您只需要操作来进行悬停。悬停后,您应该可以单击该元素。我在那里等待以确保页面在您尝试单击之前有一秒钟让元素可见。你可能不需要它。

    Actions action = new Actions(driver);
    IWebElement MegaMenu = driver.FindElement(By.CssSelector("#tab-overview"));
    action.MoveToElement(MegaMenu).Build().Perform();
    WebDriverWait Wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
    IWebElement updateLink = Wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("Update my details")));
    updateLink.Click();
    

    【讨论】:

    • 嗨,这没有按预期工作。我收到了一个无法找到更新详细信息链接的元素。还有其他方法可以做到这一点,例如使用 javascript?
    • @mpoulton 您需要提供相关的 HTML 或页面链接。我只是使用您在代码中提供的定位器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多