Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Selenium中单击嵌套链接_Java_Selenium - Fatal编程技术网

Java 如何在Selenium中单击嵌套链接

Java 如何在Selenium中单击嵌套链接,java,selenium,Java,Selenium,我试图用Selenium在我的网站上点击一个链接,但我找不到任何成功的方法 我的链接(我想点击的是MitarBeiterWaltung)在一个嵌套的HTML中,当你用鼠标悬停时,链接将被放下 我可以得到链接文本,但我不能点击链接 这是我的HTML <div class="dropdownAdmin"> <button class="dropbtnAdmin" th:text="#{konto}"> <i class="fa fa-caret-

我试图用Selenium在我的网站上点击一个链接,但我找不到任何成功的方法

我的链接(我想点击的是MitarBeiterWaltung)在一个嵌套的HTML中,当你用鼠标悬停时,链接将被放下

我可以得到链接文本,但我不能点击链接

这是我的HTML

<div class="dropdownAdmin">
    <button class="dropbtnAdmin" th:text="#{konto}">
        <i class="fa fa-caret-down"></i>
    </button>
    <div class="dropdown-content-admin">
        <div sec:authorize="hasAuthority('ADMIN')">
            <a href="/mitarbeiterverwaltung">Mitarbeiterverwaltung</a>
            <a href="/registration" th:text="#{benutzerregistrierung}"></a>
                        </div>
            <a href="/passwordaenderung" th:text="#{passwort_aendern}"></a>
                <div>
                  <a href="javascript: document.logoutForm.submit()" > Sign out </a>
                  <form name="logoutForm" th:action="@{/logout}" method="post" th:hidden="true">
                      <input hidden type="submit" value="Logout"/>
                  </form>
            </div>
        </div>
    </div>
这是另一次尝试,以证明我能够看到链接文本:

List<WebElement> link_list = driver.findElements(By.xpath(".//div[@class='dropdownAdmin']//div[@class='dropdown-content-admin']//a").name("mitarbeiterverwaltung"));
for (int i=0;i<link_list.size();i++) {
    WebElement element = link_list.get(i);
    String contents = element.getAttribute("innerHTML");
    System.out.println("Values from dropdown is : "+contents);
}
List link\u List=driver.findElements(By.xpath(“.//div[@class='dropdownAdmin']//div[@class='dropdown-content-admin']//a”).name(“MitarbeiterWaltung”);

对于(int i=0;i,根据您的声明,您需要将鼠标悬停在下拉列表中,然后需要单击特定文本。我已经尝试了一些,但由于我没有正在测试的应用程序,请尝试下面的代码,让我知道这是否有效

Actions action=new Actions(driver);
WebElement element=driver.findElement(By.xpath("//div[@class='dropdown-content-admin']"));
action.moveToElement(element).build().perform();        
System.out.println(driver.findElement(By.xpath("//a[contains(text(), 'Mitarbeiterverwaltung')]")).getText());
driver.findElement(By.xpath("//a[contains(text(), 'Mitarbeiterverwaltung')]")).click();

我现在能解决我的问题了

我必须浏览所有的s,然后点击一下

也许有一个较短的版本,但我很抱歉,我不知道,目前这是工作

动作生成器=新动作(驱动程序)


这里嵌套的HTML是什么意思?链接将被删除是什么意思?请尝试使用此定位器
//a[contains(@href,'registration')]
或尝试使用JavaScriptExecutor。我的意思是,我的链接嵌套在两个嵌套中,这是一个下拉列表。当我用鼠标悬停在上面时,此列表将立即打开。不太正常:我遇到以下异常:ElementNotVisibleException。出现错误的步骤有哪些。悬停之前或之后。您能ut在悬停后延迟以查看任何差异。我确实无法回答有关错误何时发生的问题,因为它在代码中运行,并且在断开连接后,我得到异常。我在action.moveToElement=>driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS)后进行了等待;但我收到了相同的错误消息。我可以看到你的答案。你只是复制了我答案的粘贴概念,并告诉我它不太有效。有时你应该感谢OP的努力,而不是抱怨。我们无法访问你的应用程序我们可以在这里做些什么来指导你解决问题。很抱歉,这没有引起我的注意。我将继续投票你的回答。
Actions action=new Actions(driver);
WebElement element=driver.findElement(By.xpath("//div[@class='dropdown-content-admin']"));
action.moveToElement(element).build().perform();        
System.out.println(driver.findElement(By.xpath("//a[contains(text(), 'Mitarbeiterverwaltung')]")).getText());
driver.findElement(By.xpath("//a[contains(text(), 'Mitarbeiterverwaltung')]")).click();
WebElement element=driver.findElement(By.xpath("//div[@class='dropdownAdmin']"));
builder.moveToElement(element).build().perform();
WebElement elementa=driver.findElement(By.xpath("//div[@class='dropdown-content-admin']"));
driver.findElement(By.xpath("//a[contains(text(), 'Mitarbeiterverwaltung')]")).click();

String title = driver.getTitle();
assertTrue(title.contains("Mitarbeiterverwaltung"));