无法使用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();
答案 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();