使用webdriver比较下拉列表中的记录?

时间:2015-12-18 07:39:10

标签: java selenium-webdriver

Hello Team我是webdriver / java的初学者。

有一个下拉列表(大小为58),需要下载任何新记录,如果列表没有更新任何新记录,则不会下载。

如果当前是9月,最近一个月是10月。它必须比较下拉列表中的sep和oct,然后继续下载。我试图将该下拉存储到List,但无法申请循环或迭代器来比较值。尝试使用索引值但失败了。

代码:

driver.get("http://www.depreportingservices.state.pa.us/ReportServer/Pages/ReportViewer.aspx?%2fOil_Gas%2fOil_Gas_Well_Historical_Production_Report");
    //maximizing the window
      driver.manage().window().maximize();
      Wait(20000);

     WebElement select = driver.findElement(By.id("id=ReportViewerControl_ctl04_ctl03_ddValue"));       
    Select list = new Select(select);
      //System.out.println("list" +list);
     list.getFirstSelectedOption().getText();

请帮忙。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,请发信息。但是如果你想获得选择的所有选项并将它们存储在List中,那么你可以从select by count函数获得一个选项计数,然后创建一个循环,你可以获得索引选项。当你将它推到List时,你可以比较它。或者您只需创建一个选项列表。 要通过xpath计数,可以像这样创建xpath:

count(//select[id,'ReportViewerControl_ctl04_ctl03_ddValue']/option)

或带有选项元素的列表..您的代码:

List<WebElement> listOfOptions = driver.findElements(By.xpath(".//*[@id='ReportViewerControl_ctl04_ctl03_ddValue'‌​]/option"));

    for(WebElement element : listOfOptions) {
        System.out.println(element.getText());
        if (element.getText() == "Sep 2015") {
            System.out.println("new month");
        }
    }

答案 1 :(得分:0)

如果我理解你的问题,这就是你想要实现的目标。

让我们说Object看起来像:

HTML

您可以使用以下命令获取列表中元素的总数。

<select id='month'>
  <option value="jan">January</option>
  <option value="feb">February</option>
  <option value="mar">March</option>
  <option value="apr">April</option>
</select>

一旦你拥有了WebElement dropDownList = driver.findElement(By.id("month")); List<WebElement> dropDownElements = dropDownList.findElements(By.tagName("option")); int sizeOfDropdown = dropDownElements.size(); ,下次size更改时,你将拥有不同的尺寸,然后你就可以使用以下任何一种方法直接跳过那个特定的你的下拉列表的索引。

HTML

我认为这有帮助。

如果要从元素中获取文本,可能需要使用Select ele = new Select(driver); ele.selectByIndex(count); ,下面是实现:

JavaScriptExecutor