谷歌搜索Selenium WebDriver,试图验证结果;如果为真,结果会返回false

时间:2014-07-09 13:48:27

标签: java selenium-webdriver

我正在尝试编写Selenium WebDriver测试,导航到Google,搜索某些内容,然后验证Google是否已搜索输入内容。但是,当我看到时,下面的代码会显示“错误”输出这是真的。

我可以为此方案找到的所有代码似乎都是Google Instant之前的版本,而且我无法在FirefoxDriver中关闭Instant stay。在检查任何内容之前,它还应该等待具有Web,图像,视频等的栏可点击;增加隐式等值似乎对测试的结果或最终结果没有任何影响。在verifyTrue和assertTrue之间切换不会改变结果。

如果答案显而易见,我道歉,但我对Selenium WebDriver(和Java)相对较新。

package mypackage;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.concurrent.TimeUnit;

public class NavigateSearchVerify {

    public static void main(String[] args) {

        WebDriver driver = new FirefoxDriver();
        String baseUrl = "http://www.google.com";
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

        driver.get(baseUrl);

        WebElement query = driver.findElement(By.name("q"));
        query.sendKeys("Hello");
        query.sendKeys(Keys.ENTER);

        WebDriverWait wait = new WebDriverWait(driver, 15);
        wait.until(ExpectedConditions.elementToBeClickable(By.id("top_nav")));

        Boolean assertTrue = driver.findElements(By.className("gbqfif")).contains("Hello");
        if (assertTrue == true) {
            System.out.print("Yes");
        } else {
            System.out.print("No");
        }    
    }    
}

2 个答案:

答案 0 :(得分:0)

你认为通过调试它是真的吗?

布尔assertTrue 启动时替换行并尝试使用此行:

if(waitForTextToLoad(By.className("gbqfif"),"Hello")){
   System.out.println("Yes");
}else{
   System.out.println("Yes");
}

并将以下内容从主要内容中删除:

public boolean waitForTextToLoad(By by, String text){
        boolean wbeWaitFor = (new WebDriverWait(driver,10))
                .until(ExpectedConditions.textToBePresentInElementLocated(by, text));
        return wbeWaitFor;
    }

答案 1 :(得分:0)

在检查您的问题和代码时,我理解这一点: -

  1. 您想要打开谷歌
  2. 键入"您好"在搜索框中
  3. 按enter
  4. 验证"您好"已在搜索框中输入
  5. driver.findElements(By.className("gbqfif")).contains("Hello");不正确。

    className("gbqfif")个元素超过4个。因此,当您使用findElements()时,将返回WebElements列表。您正在检查此列表是否包含“您好”。字符串对象。但该列表包含WebElement对象。

    请尝试使用以下代码: driver.findElement(By.name("q")).getAttribute("value").contains("Hello");

    如果这有助于您,请告诉我。