我需要点击“数据库”按钮。我试试这段代码:
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矿石做到这一点?
答案 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"));