如何从自动建议文本框中选择值?

时间:2019-02-17 11:29:34

标签: selenium selenium-webdriver drop-down-menu

From text box我已经尝试了多种方法来找出解决方案,但失败了,因此请针对此查询向我提供帮助

网站:-https://www.goibibo.com/

在该网站内,当我尝试从“ FROM”自动提示文本框中选择值时,我无法选择,因为我无法检查该下拉列表,因为它是动态的,并且使用了一些JavaScript功能。所以请帮我

4 个答案:

答案 0 :(得分:1)

您可以使用下面的代码,而不是通过硬编码发送值,而是可以通过Excel进行动态读取。

import java.awt.AWTException;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class Testing {
	public static WebDriver driver;

	@Test
	public void test() throws InterruptedException, AWTException {
		System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver");
		driver = new ChromeDriver();
		driver.get("https://www.goibibo.com/");
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
		WebElement fromDropDwon = driver.findElement(By.xpath("//input[@id='gosuggest_inputSrc']"));
		fromDropDwon.click();
		fromDropDwon.sendKeys("Delhi (DEL)");
		fromDropDwon.sendKeys(Keys.ARROW_DOWN);
		fromDropDwon.sendKeys(Keys.ENTER);
		
	}
}

敬请期待,它符合您的期望。

答案 1 :(得分:0)

由于它会自动建议内容,并且您要从下拉列表中选择第一个选项,因此可以使用硒的Keys枚举,您可以执行以下选择:

driver.get("https://www.goibibo.com/");
WebElement from = driver.findElement(By.id("gosuggest_inputSrc"));
from.sendKeys("Bangalore");

Thread.sleep(3000);
from.sendKeys(Keys.ARROW_DOWN +""+ Keys.ENTER);

如果要选择第一个选项以外的其他选项,则可以使用以下xpath来标识该下拉选项:

//input[@id='gosuggest_inputSrc']/preceding-sibling::i/following::ul[contains(@id, 'react-autosuggest')]//li

//ul[contains(@id, 'react-autosuggest')]//li

以下是用于打印下拉菜单中所有选项并选择特定值的代码:

driver.get("https://www.goibibo.com/");
WebElement from = driver.findElement(By.id("gosuggest_inputSrc"));
from.sendKeys("Bangalore");

// Giving some delay so that the auto suggestion drop down will appear      
Thread.sleep(3000);
// Fetching options from dropdown
List<WebElement> dropdownOptions = driver.findElements(By.xpath("//ul[contains(@id, 'react-autosuggest')]//li"));
// Printing all the option text
for(WebElement element : dropdownOptions) {
    System.out.println(element.getText());
}
// Selecting the first option
dropdownOptions.get(0).click();

希望对您有帮助...

答案 2 :(得分:0)

如果第一个自动建议选项需要XPath,请尝试

//ul[@id='react-autosuggest-1']/li[@id='react-autosuggest-1-suggestion--0']

您可以将0替换为1以获得第二个选项,2-替代第三个选项,等等

答案 3 :(得分:0)

转到源选项卡>单击文本框>当消失的元素在网页上可用时按F8或(FN + F8)(通过这样做,该网页将切换到调试模式,现在可以检查元素)。