如何通过Selenium和Java选择多重选择的各个动态选项

时间:2019-03-13 18:50:02

标签: selenium select drop-down-menu webdriver webdriverwait

嗨,我正在尝试使脚本将在多选框中选择单个值并根据结果执行一些操作的过程自动化。下面是我的代码。我的代码的问题是,它将选择多选的所有值,而应选择列表中的单个项目。所有列表值本质上都是动态的,我们无法预测会发生什么。在这方面要求您的帮助!

多重选择中的值为测试1,测试2,依此类推。

public void filterByTemplateName() throws Exception 
{
    WebDriverWait wait = new WebDriverWait(driver, 15);
    wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("performing action")));
    WebElement eventName = driver.findElement(By.xpath(".//select[@name='Test_templateName']']")); 
    driver.switchTo().frame("test_frame");
    Select sel = new Select(templateName);
    List<WebElement> options = sel.getOptions();
    for (WebElement temp:options) 
    {
        temp.click(); 
    } 
}

2 个答案:

答案 0 :(得分:0)

由于已将此sel变量初始化为Select对象,因此您应该能够使用Select为此提供的方法:

for (WebElement temp:options) {
    sel.selectByVisibleText(temp);
}

有帮助吗?

答案 1 :(得分:0)

考虑所有的测试标准:

  • 从多个列表中逐项选择单个项目。
  • 列表值是动态的。
  • 您无法预测会发生什么。

要从列表中选择单个项目,可以使用以下解决方案:

WebElement dropdown_element = driver.findElement(By.xpath("xpath_dropdown_element"));
Select templateName = new Select(dropdown_element);
List<WebElement> options = templateName.getOptions();
for(int i=0; i<options.size(); i++)
{
    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("./dropdown_element//options"))).get(i).click();
    System.out.println("You can perform your other task for this option selection");
}