【问题标题】:How to select an element from a menu using Webdriver Selenium ? The Menu drop down shows up on Mouse Over?如何使用 Webdriver Selenium 从菜单中选择元素?菜单下拉菜单显示在鼠标悬停?
【发布时间】:2012-08-29 19:34:21
【问题描述】:

如何使用 Webdriver Selenium 从菜单中选择一个元素? 菜单下拉菜单显示在鼠标悬停上?

【问题讨论】:

    标签: selenium selenium-rc selenium-webdriver


    【解决方案1】:

    您可以通过两种方式进行检查: 1) 第一种方法是使用操作生成器

    WebElement mnuElement;
    WebElement submnuElement;
    mnEle = driver.findElement(By.Id("mnEle")).Click();
    sbEle = driver.findElement(By.Id("sbEle")).Click();
    
    Actions builder = new Actions(driver);
    // Move cursor to the Main Menu Element
    builder.MoveToElement(mnEle).Perform();
    // Giving 5 Secs for submenu to be displayed
    Thread.sleep(5000L);
    // Clicking on the Hidden SubMenu
    driver.findElement(By.Id("sbEle")).Click();
    

    here

    2) 另一种方法是使用 jscript 点击直接需要的元素,而不模拟鼠标悬停事件:

    String cssLocatorOfTheElement=....//locator of the element to click on    
    JavascriptExecutor js = (JavascriptExecutor) driver;
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append("var x = $(\'"+cssLocatorOfTheElement+"\');");
                stringBuilder.append("x.click();");
                js.executeScript(stringBuilder.toString());
    

    希望这对你有用)

    【讨论】:

    • 使用 selenium-java-2.35: Actions builder = new Actions(driver); builder.moveToElement(driver.findElement(By.id("user-options"))).click(); builder.moveToElement(driver.findElement(By.id("log_out"))).click(driver.findElement(By.id("log_out"))); builder.perform();如果简单的 .click() 不起作用,请将 Element 传递给它,即使光标已经移到那里。
    【解决方案2】:

    模拟 mouseOver 事件,然后选择你喜欢的元素:

    var elementToShowMenu = Driver.FindElement(Byl.Id("some id")); 
    new Actions(Driver).MoveToElement(elementToShowMenu).Release(elementToShowMenu).Build().Perform();
    var menuElement = Driver.FindElement(Byl.Id("your menu id"));
    

    【讨论】:

      【解决方案3】:

      这是我如何单击标签上的不可见锚链接:由 Javascript 动态生成的链接:

      public static void mouseClickByLocator( String cssLocator ) {
           String locator = cssLocator;
           WebElement el = driver.findElement( By.cssSelector( locator ) );
           Actions builder = new Actions(driver);
           builder.moveToElement( el ).click( el );
           builder.perform();
      }
      

      【讨论】:

        【解决方案4】:
        WebElement mnuElement;
        WebElement submnuElement;
        mnuElement = driver.findElement(By.cssSelector("insert selector here"));
        submnuElement = driver.findElement(By.cssSelector("insert selector here"));
        
        Actions builder = new Actions(driver);
        // Move cursor to the Main Menu Element
        builder.moveToElement(mnuElement).perform();
        // Pause 2 Seconds for submenu to be displayed
        TimeUnit.SECONDS.sleep(2); //Pause 2 seconds
        // Clicking on the Hidden submnuElement
        submnuElement.click();  
        

        【讨论】:

          猜你喜欢
          • 2013-03-14
          • 2023-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-25
          • 1970-01-01
          • 2012-09-05
          相关资源
          最近更新 更多