我尝试通过Sping Boot 中的Selenium实现注销测试方法,但无法检测到位于右上方的下拉菜单。
我该如何修复它?
测试方法如下所示。
@Test
@Order(4)
public void logout() throws InterruptedException {
login();
driver.get("https://github.com");
Thread.sleep(1000);
// Header-item position-relative mr-0 d-none d-md-flex
WebElement profileDropdown = driver.findElement(By.cssSelector(".Header-item.position-relative.mr-0.d-none.d-md-flex")); // cannot work
// dropdown-item dropdown-signout
WebElement signOutButton = driver.findElement(By.cssSelector(".dropdown-item.dropdown-signout")); // cannot work
profileDropdown.click();
Thread.sleep(1000);
signOutButton.click();
}
下面是错误部分
java.net.SocketException: Connection reset
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":".dropdown-item.dropdown-signout"}
第1次编辑
String xpathProfile = "//*[@aria-label='View profile and more']";
WebElement profileDropdown = driver.findElement(By.xpath(xpathProfile));
String xpathSignOut = "//button[contains(@class,'dropdown-signout')]";
WebElement signOutButton = driver.findElement(By.xpath(xpathSignOut));
我得到了这个问题如下所示。
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//button[contains(@class,'dropdown-signout')]"}
2条答案
按热度按时间ki0zmccv1#
这是一个不好的做法,试图找到这样的元素,你应该更具体。给定这个DOM,你正在使用我会尝试使用一个选择器有点像这样:
正如你所看到的,这是一个xpath类型的选择器,我建议你学习xpath,因为一旦你习惯了它,它的可读性就会大大提高,而且它还能在一些你不能使用css选择器的边缘情况下工作。
我还注意到,如果你把窗口变小,你点击的配置文件按钮在github中会被隐藏起来,所以你的按钮可能不会被点击。你可以尝试使用chromeOptions设置一个更大的窗口大小:
当测试运行时,您是否能看到按钮?
vq8itlhq2#
答案如下