登录后我想在主页上找到元素并想要点击它,但不幸的是它因为包含登录网址而无法找到元素。 如何在同一页面上切换到不同的驱动程序。
public void home()
{
WebDriver driver = new ChromeDriver();
driver.get("https://localhost:8443/ablogin");
driver.findElement(By.name("j_username")).sendKeys("superadmin@ab.com");
driver.findElement(By.name("j_password")).sendKeys("admin");
driver.findElement(By.ByClassName.className("btn")).click();
//Home Page Opened
driver.findElement(By.linkText("settings")).click();
driver.close();
System.exit(0);
}
}
答案 0 :(得分:0)
试试这个CSS选择器:
li[sec:authorize*='Setting Page']>a[th:href$='settings}']
答案 1 :(得分:0)
可能有多种情况无法识别元素。
无效的定位器
我可以在您的定位器中看到的一个问题是:driver.findElement(By.linkText("settings")).click();
在这里,您使用链接文本“settings”(注意's'很简单)作为定位器。但是在您的HTML代码中,设置链接的设置链接的S是大写。 您必须使用HTML中的确切链接文本。
driver.findElement(By.linkText("Settings")).click();
页面加载时间
失败的另一个原因可能是页面加载超时。导航到主页后不久,您正试图找到可能尚未加载的设置链接。因此,请在页面导航后为页面加载提供充足的时间。
driver.findElement(By.ByClassName.className("btn")).click();
//Home Page Opened
// Wait till page is loaded properly before continue.
Thread.sleep(5000);
driver.findElement(By.linkText("settings")).click();
<强>内部框架强>
设置链接可能位于iframe内。检查您的HTML代码是否有任何iframe。如果链接在iframe中,则必须在找到其中的元素之前切换到该链接。
driver.switchTo().frame()
请参阅以下答案,了解如何在Selenium中切换到iframe。 how-to-switch-between-frames-in-selenium-webdriver-using-java