2016-10-03 11 views
0

Ich habe zwei Dropdown-Listen. Die zweite ist leer bis eine Auswahl von der ersten getroffen wird. Wenn jedoch die erste mit Selen unter Verwendung von select.selectByIndex() oder einer der Auswahlmethoden ausgewählt wird, wird die zweite Dropdownliste nicht aufgefüllt.Selen nicht dynamisch aktualisieren wählen

public class ScraperTwo { 


    public static void main(String[] args) { 
     System.setProperty("webdriver.chrome.driver", "/home/user/chromedriver"); 
     WebDriver driver = new ChromeDriver(); 

     driver.get("https://www.alboautotrasporto.it/web/portale-albo/imprese-iscritte"); 




     Select firstDropDown = new Select(driver.findElement(By.id("_impreseiscritte_WAR_serviziportalealbo100SNAPSHOTesercizioalbo_provinceList"))); 
     firstDropDown.selectByIndex(10); 

     (new WebDriverWait(driver, 30)).until(new ExpectedCondition<Boolean>() { 
      public Boolean apply(WebDriver d) { 
       Select innerSelect = new Select(d.findElement(By.id("_impreseiscritte_WAR_serviziportalealbo100SNAPSHOTesercizioalbo_comuniList"))); 
       return innerSelect.getOptions().size() > 0; 
      } 
     }); 

     WebElement secondDropDown = driver.findElement(By.id("_impreseiscritte_WAR_serviziportalealbo100SNAPSHOTesercizioalbo_comuniList")); 

     List<WebElement> allOptions = secondDropDown.findElements(By.tagName("option")); 

     for(WebElement option: allOptions) { 
      System.out.println(String.format("Value is %s", option.getText())); 
     } 
    } 
} 
+0

Ich bin nicht als Antwort enthalten, wie ich es nicht konsequent arbeiten konnte ... Arbeitete nur 2 von 5 Mal ... Versuchen Sie mit diesem Code ... ChromeOptions chop = new ChromeOptions(); chop.addArguments ("Testtyp"); chop.addArguments ("startmaximiert"); chop.addArguments ("- allow-running-unsecure-content"); WebDriver-Treiber = neuer ChromeDriver (chop); Außerdem habe ich 5 Sekunden lang einen Thread.sleep eingefügt, bevor ich auf das erste Dropdown geklickt habe ... – Grasshopper

Antwort

0

Ich hoffe, dass die Webanwendung, an der Sie arbeiten, den Onblur für das erste ausgewählte Dropdown verwendet. Es ist besser, sich auf das nächste Dropdown zu konzentrieren, wenn Sie zuerst das JavaScript im ersten auswählen. Probieren Sie einfach den folgenden Code oberhalb des Webdrivers für das zweite Dropdown-Menü aus.

WebElement element = driver.findElement(By.id("_impreseiscritte_WAR_serviziportalealbo100SNAPSHOTesercizioalbo_comuniList")); 
new Actions(selenium).moveToElement(element).perform(); 
new WebDriverWait(driver,90).equals((((JavascriptExecutor) selenium).executeScript("return document.readyState").equals("complete"))); 

Viel Glück!