我试图单击我网站上带有Selenium的链接,但找不到任何成功的方法。
我的链接(我想单击Mitarbeiterverwaltung)位于嵌套的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>
这是我最后一次尝试使用Java
driver.findElement(By.xpath(".//div[@class='dropdownAdmin']//div[@class='dropdown-content-admin']").linkText("Mitarbeiterverwaltung")).click();
这是另一种尝试,目的是证明我能够看到链接文本:
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);
}
也许有人可以给我一个很好的提示,说明如何解决我的问题。
谢谢。
答案 0 :(得分:1)
根据您的声明,您需要将鼠标悬停在下拉菜单上,然后单击特定文本。我尝试了一下,但是由于我没有正在测试的应用程序,请尝试以下代码让我知道是否工作。
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();
答案 1 :(得分:0)
我现在能够解决我的问题。
我必须先遍历所有s,然后单击一下。
也许有一个较短的版本,但很抱歉,我不知道,目前这是可行的。
动作构建器=新的动作(驱动程序);
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"));