【问题标题】:Mouseover Selenium with Java鼠标悬停 Selenium 与 Java
【发布时间】:2014-05-21 16:04:08
【问题描述】:

我有以下问题:我正在使用带有 Java 的 selenium webdriver,并且想要提取网页的所有链接。一些链接是按需生成的。这意味着鼠标悬停在 menulinks 上会生成更多链接。当我加载页面时,这些链接不存在。

我尝试先提取菜单导航链接,将鼠标悬停,然后向驱动程序询问“新”链接。但似乎没有“新”链接。

WebElement mainNavi = element.findElement(By.className("navigation"));

Actions actions = new Actions(driver);
List<WebElement> menuHoverLinks = new ArrayList<WebElement>();
menuHoverLinks.addAll(mainNavi.findElements(By.cssSelector("a")));

for (WebElement menuHoverLink : menuHoverLinks) {
  Actions hoverOverRegistrar = actions.moveToElement(menuHoverLink);
  hoverOverRegistrar.perform();
}

第一:我的想法对吗?有可能这样做吗?如果是,我做错了什么?

提前致谢!

【问题讨论】:

    标签: java selenium mouseover


    【解决方案1】:

    如果链接是动态生成的,那么它们最初可能不存在。您应该在单击菜单后使用Implicit Waits 以允许网页在尝试查询之前加载新内容。

    考虑使用支持点击的WebElement,而不是Actions

    例如,你可能会这样说

    // do an implicit wait until the menu is fully loaded
    List<WebElement> elmts = driver.findElements(By.cssSelector("a"));
    for (WebElement elmt : elmts) {
        elmt.click();
    }
    

    【讨论】:

    • 但是感谢这个提示,所以这是正确的答案;)
    • 考虑提出解决问题的答案。
    • 我没有完全弄清楚,但在我的情况下,Actions 似乎不正确。现在我正在尝试使用 Java Robot 来模拟鼠标交互。
    • 鉴于您的代码,如果您只是与 DOM 交互,则不需要使用机器人或操作。见编辑。
    • 用户通过将鼠标悬停在特定链接上来更改 DOM。悬停将生成更多我需要之后获取的链接。
    【解决方案2】:
        private static String[] links = null;
        private static int linksCount = 0;  
        public static void main(String[] args){
    
         driver.get("basic url");
    
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    
        List<WebElement> all_link_webpage=driver.findElements(By.tagName("a"));
        linksCount = all_link_webpage.size();
        System.out.println(linksCount);
        links= new String[linksCount];
        for(int i=0;i<linksCount;i++)
        {
        links[i] = all_link_webpage.get(i).getAttribute("href");
        System.out.println(all_link_webpage.get(i).getAttribute("href"));
        }
      }
    

    这将帮助您计算网页中的所有链接并在控制台中打印链接。我希望它会有所帮助。此外,我不确定鼠标悬停链接.. :) 谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2018-09-03
      • 1970-01-01
      • 2011-11-08
      • 2010-10-11
      • 2018-04-25
      • 2015-04-22
      相关资源
      最近更新 更多