在selenium webdriver

时间:2015-08-21 08:33:56

标签: selenium-webdriver

我正在使用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());
}

}

1 个答案:

答案 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();
}