如何在selenium登录后切换到不同的驱动程序URL?

时间:2015-11-27 06:53:31

标签: java selenium

登录后我想在主页上找到元素并想要点击它,但不幸的是它因为包含登录网址而无法找到元素。 如何在同一页面上切换到不同的驱动程序。

 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);
}
}

2 个答案:

答案 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