Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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

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 动态下拉搜索栏结果不会解析到Selenium的“我的列表”中_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java 动态下拉搜索栏结果不会解析到Selenium的“我的列表”中

Java 动态下拉搜索栏结果不会解析到Selenium的“我的列表”中,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在创建一个简单的脚本来访问priceline.com,然后在离港航班下搜索“N,并从下拉列表中选择纽约市(NYC) 我的代码成功地输入了搜索栏,但仍然无法找到包含所有相关结果的动态下拉列表。我不知道为什么 // Clicks on "Departing from?" textbox and clears it before typing 'N' driver.findElement(By.id("flight-departure-airport0")).click(); driver.fin

我正在创建一个简单的脚本来访问priceline.com,然后在离港航班下搜索“N,并从下拉列表中选择纽约市(NYC)

我的代码成功地输入了搜索栏,但仍然无法找到包含所有相关结果的动态下拉列表。我不知道为什么

// Clicks on "Departing from?" textbox and clears it before typing 'N'
driver.findElement(By.id("flight-departure-airport0")).click();
driver.findElement(By.id("flight-departure-airport0")).clear();
driver.findElement(By.id("flight-departure-airport0")).sendKeys("N");

// Store all dynamic search results into a list
List<WebElement> departureDropdown = driver.findElements(By.id("//*['flight-departure-airport0-dropdown']/div/div/div"));

System.out.println("List: "+departureDropdown);
//单击“离开?”文本框并在键入“N”之前将其清除
driver.findElement(By.id(“flight-example-airport0”))。单击();
driver.findElement(By.id(“航班起飞机场0”)).clear();
驱动程序.findElement(按.id(“航班起飞-机场0”)).sendKeys(“N”);
//将所有动态搜索结果存储到列表中
List departureDropdown=driver.findElements(按.id(“/*['flight-department-airport0-dropdown']/div/div/div”);
System.out.println(“列表:“+部门下拉列表”);
期望值: 我希望
departureDropdown
在不同机场的长度为9。(Nadi、纽约市、长崎等)并期望
部门下拉列表[i]
以纯文本形式返回其中一个城市名称

实际值:
我的代码在列表初始化时被卡住了
departureDropdown
为空。

您使用了By.id,但创建了xPath

尝试使用下面的xPath

List<WebElement> departureDropdown = driver.findElements(By.xPath("//div[@id='flight-departure-airport0-dropdown']//div[@role='option']"));
List departureDropdown=driver.findElements(By.xPath(//div[@id='flight-department-airport0-dropdown']//div[@role='option']);

您已经打印了一个对象列表。你检查过列表大小了吗?没有,我没有,我的上一个print语句甚至没有运行,所以我没有要解决的输出。我会试试你的建议,谢谢!这是因为您的driver.findElements失败,您使用了By.id,预期的是By.xPath。更多细节请参见我的答案。谢谢,这让我得到了正确的结果<代码>System.out.println(“动态搜索”);List departureDropdown=driver.findElements(By.xpath(“//div[@id='flight-department-airport0-dropdown']/div/div/div”);System.out.println(“列表:”+departureDropdown.get(0.getText())我想唯一的方法是创建一个字符串数组并将getText()传递给每个数组。非常感谢。