如何处理2个类似的无序下拉列表,它们在selenium webdriver中具有相同的类?

时间:2018-01-31 07:01:09

标签: java selenium selenium-webdriver webdriver

第一个下拉列表HTML代码:



<div id="boundlist-1018" class="x-boundlist x-boundlist-floating x-layer x-boundlist-default x-boundlist-above" tabindex="-1" style="left: 655px; top: 356px; height: auto; width: 295px; z-index: 19001;">
<div id="boundlist-1018-outerEl" class="x-boundlist-outer-ct" style="overflow:auto">
   <div id="boundlist-1018-listEl" class="x-boundlist-list-ct" style="overflow: auto; height: auto;">
      <ul>
         <li class="x-boundlist-item x-boundlist-selected x-boundlist-item-over" role="option">aa</li>
         <li class="x-boundlist-item" role="option">eGDP132</li>
         <li class="x-boundlist-item" role="option">oracle</li>
      </ul>
   </div>
</div>
&#13;
&#13;
&#13;

第二个下拉列表HTML代码:

&#13;
&#13;
<div id="boundlist-1012-listEl" class="x-boundlist-list-ct" style="overflow: auto; height: 88px;">
       <ul>
          <li class="x-boundlist-item x-boundlist-selected" role="option">eGDP132</li>
          <li class="x-boundlist-item" role="option">Buddy_agt</li>
          <li class="x-boundlist-item" role="option">New_agt</li>
       </ul>
    </div>
&#13;
&#13;
&#13;

Frist Downdown列表代码:

List<WebElement>internal_agt=driver.findElements(By.xpath(".//[@class='xboundlist-item']"));
for (WebElement ele : internal_agt)    
{    
   String str = ele.getText();    
   System.out.println("Dropdown values are***************" +str);    
} 

5 个答案:

答案 0 :(得分:0)

要获得第一个下拉值,请使用x-path (//*[@class='x-boundlist-list-ct'])[1]/ul/li

List<WebElement>internal_agt=driver.findElements(By.xpath("(//*[@class='x-boundlist-list-ct'])[1]/ul/li"));
for (WebElement ele : internal_agt)    
{    
   String str = ele.getText();    
   System.out.println("Dropdown values are***************" +str);    
} 

对于第二个列表,请使用x-path (//*[@class='x-boundlist-list-ct'])[2]/ul/li

 List<WebElement>internal_agt=driver.findElements(By.xpath("(//*[@class='x-boundlist-list-ct'])[2]/ul/li"));
   for (WebElement ele : internal_agt)    
   {    
     String str = ele.getText();    
     System.out.println("Dropdown values are***************" +str);    
   } 

答案 1 :(得分:0)

IWebElement[] options1 = driver.findElements(By.Xpath(".//div[@id='boundlist-1018-listEl']/ul/li")).ToArray();
IWebElement[] options2 = driver.findElements(By.Xpath(".//div[@id='boundlist-1012-listEl']/ul/li")).ToArray();

foreach(IWebElement q in options1)
{
    System.out.println(q.Text);
}

foreach(IWebElement q in options2)
{
    System.out.println(q.Text);
}

答案 2 :(得分:0)

列出选项1 = driver.findElements(By.cssSelector(“#boundlist-1018-listEl .xboundlist-item”));

列出选项2 = driver.findElements(By.cssSelector(“#boundlist-1012-listEl .xboundlist-item”));

这些应该有效

答案 3 :(得分:0)

我陷入了类似情况。下面的代码像魔术一样适用于DropDown。希望这会有所帮助。

public void selectValueFromDropDown(By Selector, String value) { //You can change "By Selector" to "WebElement element"
    List<WebElement> DropDownlist = driver.findElements(Selector);  
    System.out.println(DropDownlist.size());
    Assert.assertEquals(DropDownlist.size(), 12, "Provinces List does not match: ");
    for (int i = 0; i < DropDownlist.size(); i++) {         
        String strText = DropDownlist.get(i).getText();
        if(strText.contentEquals(value)) {
            DropDownlist.get(i).click();
            break; //Comment this statement to print all values from DropDown on list 
        }
        System.out.println("Province " + i + "==========> " + strText);
    }   
}

答案 4 :(得分:-1)

尝试:

List<WebElement>internal_agt=driver.findElements(By.cssSelector("ul"));