Selenium没有更新动态选择

时间:2016-10-03 18:55:05

标签: java selenium web-scraping

我有两个下拉列表。第二个是空的,直到从第一个选择。但是,当使用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()));
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我希望您正在使用的Web应用程序使用onblur作为第一个选择下拉列表。最好关注下一个下拉列表,首先选择在第一个中触发javascript。只需尝试在webdriverwait上面包含以下代码,即可获得第二个选择下拉列表。

include('file.phar');
祝你好运!