2016-10-03 3 views
0

У меня есть два раскрывающихся списка. Второй пуст, пока не будет сделан выбор из первого. Однако, когда первый выбран с селеном, используя select.selectByIndex() или любой из методов выбора, второй раскрывающийся список не заполняется.Selenium не обновляет динамический выбор

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

Я не включаю в качестве ответа, поскольку я не мог заставить его работать последовательно ... Работал только 2 из 5 времени ... Попробуйте с этим кодом ... ChromeOptions chop = new ChromeOptions(); chop.addArguments ("тест-типа"); chop.addArguments ("старт-максимизируется"); chop.addArguments ("- позволяют выполняющихся-небезопасный-контент"); WebDriver driver = новый ChromeDriver (chop); Также я ввел Thread.sleep из 5 секунд, прежде чем щелкнул первый раскрывающийся список ... – Grasshopper

ответ

0

Надеюсь, что веб-приложение, на котором работает ваша работа, использует onblur для первого выбора. Лучше сосредоточиться на следующем выпадающем списке, чтобы вы сначала выбрали запуск javascript в первом. Просто попробуйте включить приведенный ниже код над webdriverwait для второго выпадающего списка.

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"))); 

Удачи вам!

Смежные вопросы