Selenium Webdriver Multiselect Dropdown ElementNotVisibleException

时间:2016-08-12 15:43:21

标签: java selenium webdriver

尝试从多选下拉框中进行选择,找到一个好的资源。

我正致力于http://preview.harriscountyfws.org/ 我正在尝试在"按代理商选择"选择多个项目。多选下拉列表。

我在这里向您展示的逻辑是非常直接的,并且遵循我找到的文章(如下所示),但是我得到WebDriverException:无法单击选项元素。

有任何建议可以获得有效的逻辑吗?

这是逻辑:

WebElement we;
String searchText;
WebDriver driver;
Select select;
WebElement listbox_element;
listbox_element = driver.findElement(By.cssSelector("span[aria-owns='ddlRegion_listbox']"));
listbox_element.click();

driver = new FirefoxDriver();
driver.get("http://preview.harriscountyfws.org/");

searchText="ALL";
we = driver.findElement(By.id("ddlRegion"));
select = new Select(we);
select.selectByVisibleText(searchText);

参考:http://www.techbeamers.com/dropdown-and-multiple-select-in-webdriver

1 个答案:

答案 0 :(得分:1)

我不认为你找到了正确的选择元素。你正在尝试的一个不是处于可见状态而是隐藏(可见:无)。

您需要找到Search By Agency下拉列表的箭头,找到元素并单击它以使下拉列表可见。我不确定在xpath中包含aria-owns属性,但这是一个简单的方法。你可以看看它。

"//div[@id='searchDiv']//span[@aria-owns='ddlRegion_listbox']//span[@class='k-select']"

然后你需要等待div [@ id ='regionSelectPopup']可见。将其粘贴在具有预期可见性条件的webdriverwait中。

然后你可以在div中选择你想要的选项。我为所有人做过。您需要对其进行参数化。点击它。

"//div[@id='regionSelectPopup']//label[.='ALL']/preceding-sibling::input[@type='checkbox']"

它也可以与标签一起使用,而不是找到复选框。

希望这有效。

        WebDriver driver = new FirefoxDriver();             
    driver.manage().window().maximize();        

    driver.get("http://preview.harriscountyfws.org/");

    WebElement agencySearchSelect = driver.findElement(
            By.xpath("//div[@id='searchDiv']//span[@aria-owns='ddlRegion_listbox']//span[@class='k-select']"));

    agencySearchSelect.click();

    new WebDriverWait(driver, 3, 100).until(ExpectedConditions.visibilityOfElementLocated(
            By.id("regionSelectPopup")));

    WebElement agencyOption = driver.findElement(
            By.xpath("//div[@id='regionSelectPopup']//label[.='ALL']/preceding-sibling::input[@type='checkbox']"));

    agencyOption.click();