无法使用selenium webdriver选择spice jet站点中的动态下拉列表

时间:2016-09-21 08:51:08

标签: selenium-webdriver

无法使用selenium webdriver在spice jet网站中选择动态下拉列表。请查看此内容。下面是我的代码:

driver.get("http://www.spicejet.com/");
driver.findElement(By.xpath(".//*[@id='ctl00_mainContent_ddl_originStation1_CTXT']")).click();
        driver.findElement(By.xpath("//a[@value='GOI']")).click();
driver.findElement(By.xpath(".//*[@id='ctl00_mainContent_ddl_destinationStation1_CTXT']")).click();
        driver.findElement(By.xpath("//div[@class='dropdownDiv']/ul/li[4]")).click();

3 个答案:

答案 0 :(得分:1)

请在选择下拉列表前添加可见性等待。

<强>像

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("test")));
new Select(driver.findElement(By.id("test"))).selectByVisibleText("test77");

答案 1 :(得分:0)

我认为你的最后一次XPath是不正确的。它指的是当时没有开放的小组。我会做这样的事情。这是工作代码。

driver.get("http://www.spicejet.com/");
setOriginStation("GOI");
setDestinationStation("BOM");

并使用这些功能处理原点和目的地站的选择。

public static void setOriginStation(String station)
{
    driver.findElement(By.id("ctl00_mainContent_ddl_originStation1_CTXT")).click();
    driver.findElement(By.cssSelector("#glsctl00_mainContent_ddl_originStation1_CTNR a[value='" + station + "']")).click();
}

public static void setDestinationStation(String station)
{
    driver.findElement(By.id("ctl00_mainContent_ddl_destinationStation1_CTXT")).click();
    driver.findElement(By.cssSelector("#glsctl00_mainContent_ddl_destinationStation1_CTNR a[value='" + station + "']")).click();
}

答案 2 :(得分:0)

使用以下代码。 实际上从城市和目的地城市有相同的下拉组件意味着两个下拉相同。因此,在第二次选择中,城市值将xpath计算两次。因此选择[2]。 [2]对我来说不起作用,所以试过[1]

driver.findElement(By.cssSelector( “#ctl00_mainContent_ddl_originStation1_CTXT”))上单击();

    driver.findElement(By.xpath("//a[@value='GOI']")).click();
    driver.findElement(By.xpath("(//a[@value='DEL'])[1]")).click();