Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当i';我试图用selenium在firefox中填充谷歌搜索结果_Java_Selenium_Firefox_Selenium Webdriver - Fatal编程技术网

Java 当i';我试图用selenium在firefox中填充谷歌搜索结果

Java 当i';我试图用selenium在firefox中填充谷歌搜索结果,java,selenium,firefox,selenium-webdriver,Java,Selenium,Firefox,Selenium Webdriver,我试图用一个关键词在谷歌搜索,然后断言第四个搜索结果是特定的词 我在google chrome上尝试过同样的代码,它工作正常 但是相同的代码在Firefox中不起作用 public class Task4_Class { WebDriver driver; @BeforeClass public void beforeClass() { System.getProperty("webdriver.gecko.driver","src\\test\\re

我试图用一个关键词在谷歌搜索,然后断言第四个搜索结果是特定的词 我在google chrome上尝试过同样的代码,它工作正常 但是相同的代码在Firefox中不起作用

public class Task4_Class {

    WebDriver driver;

    @BeforeClass
    public void beforeClass() {
        System.getProperty("webdriver.gecko.driver","src\\test\\resources\\Drive\\geckodriver.exe"); 
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
    }

    @AfterClass
    public void afterClass() {
        //driver.close();
    }

    @BeforeMethod
    public void beforeMethod() {
        driver.navigate().to("https://www.google.com/ncr");
    }

    @Test
    public void searchInGoogleAndAssertTheFourthResult() {
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("TestNG");
        searchBox.sendKeys(Keys.ENTER);
          List <WebElement> results = driver.findElements(By.className("ellip"));
          String fourthResult = results.get(3).getText();
          Assert.assertEquals(fourthResult, "TestNG Tutorial");
    }
}
公共类任务4\u类{
网络驱动程序;
@课前
类()之前的公共无效{
System.getProperty(“webdriver.gecko.driver”、“src\\test\\resources\\Drive\\geckodriver.exe”);
驱动程序=新的FirefoxDriver();
driver.manage().window().maximize();
}
@下课
公共空舱后舱(){
//driver.close();
}
@预处理法
方法()之前的公共无效{
驱动程序。导航()。到(“https://www.google.com/ncr");
}
@试验
public void searchingooglendassertthefourthresult(){
WebElement searchBox=driver.findElement(By.name(“q”);
searchBox.sendKeys(“TestNG”);
searchBox.sendKeys(key.ENTER);
列表结果=driver.findElements(By.className(“ellip”);
String fourthResult=results.get(3.getText();
Assert.assertEquals(第四个结果,“TestNG教程”);
}
}

您的测试没有等待结果出现,因此它将使用空元素填充列表,因为页面尚未完全加载。我更新了您的代码,以归纳出
WebDriverWait
,还更新了XPath定位器,使其更加健壮。我测试了这个函数并成功地检索到了第四个搜索结果

    @Test
    public void searchInGoogleAndAssertTheFourthResult() {
        WebElement searchBox = driver.findElement(By.XPath("q"));
        searchBox.sendKeys("TestNG");
        searchBox.sendKeys(Keys.ENTER);

          // wait for elements to exist
          new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.XPath("//a/h3/div")));

          // get list of search result elements
          List <WebElement> results = driver.findElements(By.XPath("//a/h3/div"));

          String fourthResult = results.get(3).getText();

          // The exact title is not just "TestNG Tutorial", there is more text
          // need to change this to a contains
          Assert.assertTrue(fourthResult.contains("TestNG Tutorial"));

          // this one will not work
          Assert.assertEquals(fourthResult, "TestNG Tutorial");
    }
}
@测试
public void searchingooglendassertthefourthresult(){
WebElement searchBox=driver.findElement(By.XPath(“q”);
searchBox.sendKeys(“TestNG”);
searchBox.sendKeys(key.ENTER);
//等待元素存在
新的WebDriverWait(driver,10).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.XPath(“//a/h3/div”));
//获取搜索结果元素的列表
List results=driver.findElements(By.XPath(“//a/h3/div”);
String fourthResult=results.get(3.getText();
//确切的标题不仅仅是“TestNG教程”,还有更多的文字
//需要将此更改为包含
Assert.assertTrue(fourthResult.contains(“TestNG教程”);
//这个不行
Assert.assertEquals(第四个结果,“TestNG教程”);
}
}

请注意,
Assert.assertEquals
语句将失败,因为没有一个搜索结果与“TestNG教程”完全匹配。他们还有其他的文本,比如“TestNG教程:注释、框架、示例…”。因此,您应该对
contains
查询运行断言。

请详细说明代码不起作用列表总是空的添加一些谢谢是的,我需要它失败,但您能告诉我如何使用contains吗?我尝试过,但我不能在我提供的示例中遗漏括号。但是contains的用法如下:
string.contains(“另一个字符串”)
如果找到另一个字符串,则返回true;如果没有,则返回false。这里有更多java文档: