我正在使用java selenium web驱动程序编写测试代码, 我想寻找" Honey rose varghese"当结果可用时,我想从结果页面上单击“影像学”链接。
public class ByPartialLink {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"\\chromedriver\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.co.in");
WebElement searchbox = driver.findElement(By.id("lst-ib"));
searchbox.sendKeys("Honey rose varghese");
searchbox.submit();
Thread.sleep(3000);
List<WebElement> search = driver.findElements(By.partialLinkText("Filmography"));
System.out.println(search.size());
}
}
答案 0 :(得分:1)
这对我有用并返回1.我只搜索完整的链接文本而不是部分文本。使用Thread.sleep()
不是最佳做法。请尝试下面的WebDriverWait
以获得更好,更一致的结果。
driver.get("http://www.google.co.in");
WebElement searchbox = driver.findElement(By.id("lst-ib"));
searchbox.sendKeys("Honey rose varghese");
searchbox.submit();
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("resultStats")));
// Thread.sleep(3000);
List<WebElement> search = driver.findElements(By.linkText("Filmography"));
System.out.println(search.size());
编辑1:反馈后
如果您想点击第一个Filmography链接,有几种方法可以做到这一点......
1)也许你想要计算链接的数量,以确保只有一个,等等。你仍然可以使用上面的代码,但点击第一个元素。
List<WebElement> search = driver.findElements(By.linkText("Filmography"));
search.get(0).click();
2)如果您总是想要点击第一个链接或者确信只有一个链接,您可以使用.findElement()
仅返回第一个元素并单击它。
WebElement search = driver.findElement(By.linkText("Filmography"));
search.click();
或单行......
driver.findElement(By.linkText("Filmography")).click();
在这种情况下(可能没有或多个搜索结果)的最佳做法是返回集合并确保至少有一个。
List<WebElement> search = driver.findElements(By.linkText("Filmography"));
if (!search.isEmpty())
{
search.get(0).click();
}