2016-09-21 1 views
0

nicht in der Lage, dynamische Drop-Down in Spice Jet-Website mit Selen-Webdriver auswählen auswählen.Bitte schauen Sie sich das an. Unten ist mein Code:nicht in der Lage, dynamische Drop-Down in Gewürz-Jet-Site mit Selen-Webdriver

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

Fügen Sie Thread.sleep (1000) hinzu oder verwenden Sie den Webdriver, um Ihr Skript so lange warten zu lassen, bis die Dropdownlisten auf der Grundlage Ihrer Auswahl angezeigt werden. –

+0

Im Allgemeinen ist 'Thread.sleep()' eine schlechte Übung. Wenn Sie warten müssen, verwenden Sie 'WebDriverWait'. Siehe meine Antwort unten für den Arbeitscode. – JeffC

Antwort

1

Fügen Sie bitte eine Sichtbarkeit hinzu, warten Sie, bevor Sie dropdown wählen.

wie

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

Ihre letzte XPath glaube, ich war falsch. Es zeigte auf ein Panel, das zu dieser Zeit nicht geöffnet war. Ich würde so etwas tun. Dies ist Arbeitscode.

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

und verwenden Sie diese Funktionen, um Auswahlen für Ausgangs- und Zielstationen zu bearbeiten.

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(); 
}