尝试从多选下拉框中进行选择,找到一个好的资源。
我正致力于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
答案 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();