用Java实现鼠标悬停Selenium

用Java实现鼠标悬停Selenium,java,selenium,mouseover,Java,Selenium,Mouseover,我有以下问题:我正在使用SeleniumWebDriver和Java,希望提取网页的所有链接。有些链接是按需生成的。这意味着,如果在菜单上使用鼠标悬停,将生成更多链接。当我加载页面时,这些链接不在那里 我试着先提取菜单导航链接,用鼠标悬停,然后向司机索要“新”链接。但似乎没有“新”链接 WebElement mainNavi=element.findElement(By.className(“导航”); 动作动作=新动作(驱动); 列表菜单超链接=新建ArrayList(); menuhowli

我有以下问题:我正在使用SeleniumWebDriver和Java,希望提取网页的所有链接。有些链接是按需生成的。这意味着,如果在菜单上使用鼠标悬停,将生成更多链接。当我加载页面时,这些链接不在那里

我试着先提取菜单导航链接,用鼠标悬停,然后向司机索要“新”链接。但似乎没有“新”链接

WebElement mainNavi=element.findElement(By.className(“导航”);
动作动作=新动作(驱动);
列表菜单超链接=新建ArrayList();
menuhowlinks.addAll(mainNavi.findElements(由.cssSelector(“a”)));
对于(WebElement MenuOverlink:MenuOverlinks){
Actions hoverOverRegistrar=Actions.moveToElement(菜单链接);
hoverOverregistar.perform();
}
第一:我的想法对吗?有可能吗?如果是,我做错了什么


提前谢谢

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

<>而不是使用<代码>动作< /代码>,考虑使用<代码> WebLeime<代码>,它支持点击.< /P> 例如,你可以说

// do an implicit wait until the menu is fully loaded
List<WebElement> elmts = driver.findElements(By.cssSelector("a"));
for (WebElement elmt : elmts) {
    elmt.click();
}
//执行隐式等待,直到菜单完全加载
List elmts=driver.findElements(By.cssSelector(“a”);
for(WebElement-elmt:elmts){
elmt.click();
}
私有静态字符串[]链接=null;
私有静态int-linkscont=0;
公共静态void main(字符串[]args){
获取(“基本url”);
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
列出所有链接网页=driver.findElements(按.tagName(“a”));
LinkScont=所有链接网页。大小();
系统输出打印项次(LinkScont);
links=新字符串[LinkScont];

对于(inti=0;我非常感谢您的提示,所以这是一个正确的答案;)试着提出一个解决问题的答案。我没有确切地理解它,但在我看来,动作似乎不对。现在我尝试使用java机器人来模拟鼠标交互。如果你的代码,你不需要使用机器人或动作,只要你与DOM交互。参见编辑。将鼠标悬停在特定链接上的用户。鼠标悬停将生成更多的链接,我需要在以后获取这些链接。
// do an implicit wait until the menu is fully loaded
List<WebElement> elmts = driver.findElements(By.cssSelector("a"));
for (WebElement elmt : elmts) {
    elmt.click();
}
    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"));
    }
  }