用于在selenium中选择值的PartialLink文本

时间:2016-07-21 08:22:56

标签: selenium selenium-webdriver

场景:使用“Selenium”一词搜索谷歌,然后点击第一个链接。

我在下面写了代码:

`WebDriver driver = new FirefoxDriver();

driver.get("https://www.google.com/");


driver.manage().window().maximize();



driver.findElement(By.id("lst-ib")).sendKeys("Selenium");

List<WebElement> alist = driver.findElements(By.partialLinkText("Selenium"));

System.out.println(alist.size());`

但它给我的大小为零。为什么呢?

2 个答案:

答案 0 :(得分:1)

发生问题是因为你不会在搜索后等待。只需稍等片刻,浏览器就可以搜索并显示结果。使用以下代码:

driver.findElement(By.id("lst-ib")).sendKeys("Selenium");
Thread.sleep(5000);

虽然不建议使用这种等待。尝试使用等待直到喜欢:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("element css path")));

你可以在这里使用xpath,id或class。

答案 1 :(得分:1)

实际上,当您要查找包含部分文本Selenium的所有链接的列表时,由于快速执行,所有链接都不会出现在DOM中。您应该尝试使用WebDriver等待DOM中的所有元素显示如下: -

WebDriver driver = new FirefoxDriver();

driver.get("https://www.google.com/");

driver.manage().window().maximize();

driver.findElement(By.id("lst-ib")).sendKeys("Selenium");
WebDriverWait wait = new WebDriverWait(driver, 10);

List<WebElement> alist = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.partialLinkText("Selenium")))

System.out.println(alist.size());

<强>输出: - 13

希望它有帮助...:)