如何使用WebDriver查找按钮?

时间:2014-02-18 22:00:58

标签: java button selenium selenium-webdriver

我需要点击“数据库”按钮。我试试这段代码:

driver.switchTo().frame("frame_content");
         wait.until(visibilityOfElementLocated(By.id("topmenucontainer")));
         driver.findElement(By.linkText("server_databases.php?token=650c2ac770f7d54449d462b18ddd6a01")); 

但即使提到当前的链接也没有帮助我,我有例外:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"partial link text","selector":"server_databases.php?token=65...

我做错了什么?我怎么能用其他方式用XPath矿石做到这一点? DB_button

5 个答案:

答案 0 :(得分:1)

您似乎使用了部分链接文字,尽管该链接似乎没有任何文字。我想你想使用像css选择器这样的东西并使用href属性。

driver.findElementBy(By.cssSelector("[href*='server_databases.php?token=650c2ac770f7d54449d462b18ddd6a01']"))

答案 1 :(得分:1)

试试这个:

driver.findElement(By.xpath("//a[contains(@href,'server_databases.php?token=')]"));

您的令牌可能每次都会生成,因此请查找是否包含部分链接。

答案 2 :(得分:0)

部分链接文字是指<a ...></a>代码之间的文字。您正在尝试匹配href上的链接文本,而不是链接文本本身。

答案 3 :(得分:0)

正如Richard所提到的,你应该提到用户可以看到的链接文本,即屏幕上显示的链接文本。我确信上面的解决方案有效,但重要的是要知道为什么你的代码没有没事。

所以替换,

driver.findElement(By.linkText("server_databases.php?token=650c2ac770f7d54449d462b18ddd6a01"));

driver.findElement(By.linkText("Databases"));

答案 4 :(得分:0)

这样就可以了。

driver.findElement(By.xpath("//a[contains(@href,'server_databases.php?token=')]"));

driver.findElement(By.xpath("/html/body/div[2]/ul/li/a"));