我不能通过Selenium Webdriver从下拉菜单中选择

时间:2017-02-09 14:36:25

标签: eclipse selenium selenium-webdriver automation automated-tests

我使用Selenium + Eclipse。我需要从下拉菜单中选择项目,但我有一个问题,也许找不到元素。我的代码如下:

package firstTC;
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.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.chrome.ChromeDriver;;

public class Testcase {


    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\nazar\\Desktop\\New folder\\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver(); 
        driver.get("https://www.goindigo.in/");
        driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
        Select oSelect = new Select(driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]")));
        oSelect.selectByIndex(3);

    }

}

我尝试过不同的定位器,但没有用。

4 个答案:

答案 0 :(得分:1)

您所寻找的不是“下拉”。首先尝试点击它:

driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]")).click();

然后点击子菜单:

driver.findElement(By.xpath(".//li[@data-val='IXA']")).click();

答案 1 :(得分:0)

我去过 GoIndigo 网站并尝试检查您在代码中提到的XPath。 您的代码中提到的XPath是“发件人”字段(如果我错了,请更正我),这是文本框(不是下拉列表

所以,而不是

Select oSelect = new Select(driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]")));
        oSelect.selectByIndex(3);

应该使用

driver.findElement(By.xpath(".//*[@id='roundWay']/form/div[1]/ul[1]/li[1]/input[1]").sendKeys("something");

答案 2 :(得分:0)

试试以下代码:

driver.get("https://www.goindigo.in/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.xpath("//input[@placeholder='From']")).click();
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//li[@data-val='BLR']"))));
driver.findElement(By.xpath("//li[@data-val='BLR']")).click();

说明:首先使用xpath定位器单击From元素,然后等到要单击它的元素。对于wait,我使用了Explicit wait方法。

此处,在我的示例中,我想点击Bengaluru,因此基于Bengaluru,我为Bengaluru城市创建了一个xpath。

如果您想点击其他城市而不是Bengaluru,那么您必须为该城市编写正确的xpath。

答案 3 :(得分:0)

您尝试使用Select课程的方式,不是那种下拉菜单。

您的值包含<li>个标记。用户按照代码选择您的值 -

// Click on the "From" textbox  

driver.findElement(By.xpath("//div[@id='roundWay']//li/input[@placeholder='From']")).click();   

// Select the required from city

driver.findElement(By.xpath("//ul[@class='city-name origin-city-name']//li[text()='Bagdogra (IXB)']")).click();