从下拉列表中选择元素

问题描述:

我想在Joomla中测试应用程序。 我有这个代码下拉:从下拉列表中选择元素

<div class="control-group"> 
    <div class="control-label"> 
     <label id="jform_category-lbl" for="jform_category" class="required"> 
      Categoria<span class="star">&#160;*</span> 
     </label> 
    </div> 
    <div class="controls"> 
     <select id="jform_category" name="jform[category]" class="required" required aria-required="true"> 
      <option value="9">stanza singola</option> 
      <option value="10">stanza doppia</option> 
      <option value="11">posto letto</option> 
     </select> 
    </div> 
</div> 

我使用Java进行测试的站点。 如何从下拉列表中选择“节数百分比”选项?

+0

创建'选择'对象将是帮助,在第一个答案中提到。 – Turcia

我曾尝试你所提到的上述网站上,它的工作为我考虑。 实际上,您需要使用自定义xpath从下拉列表中选择值并将其存储在列表中。然后点击你想要的值。

Sometime Select()不起作用,您可以使用此解决方法在下拉列表中选择值。

以下是相同的工作代码。

import java.util.List; 
import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.Select; 
import org.openqa.selenium.support.ui.WebDriverWait; 

public class SelectDropdown { 

    public static void main(String[] args) { 

     WebDriver driver = new FirefoxDriver(); 
     driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
     driver.manage().window().maximize(); 
     driver.get("http://bachecalloggi.listedisinistra.org/index.php/annunci"); 
     driver.findElement(By.xpath("//button[contains(text(),'Ricerca Avanzata')]")).click(); 
     select1(driver); 
    } 

     public static void select1(WebDriver driver) { 
        //Clicking on the Element to open the dropdown. 
        WebElement clickme = driver.findElement(By.xpath("//*[@id='filter_energy_class_chzn']/a/span")); 
        clickme.click(); 
        //Sometime need to wait, as it take some time to load the values in dropdown. 
        //Thread.sleep(3000); 

        //Picking all the value from Dropdown. Use Custom Xpath for this. 
        List<WebElement> options = driver.findElements(By.xpath("//*[@id='filter_energy_class_chzn']//*[@class='chzn-results']/li")); 

        for (int i=0; i<options.size(); i++){ 
        if (options.get(i).getText().equalsIgnoreCase("B")){ 
        options.get(i).click(); 
        } 
        }   

     } 
} 

你有没有使用Select

WebElement elemnet = driver.findElement(By.id("jform_category")); 
Select select = new Select(elemnet); 
//By value 
select.selectByValue("10"); 

//By index 
select.selectByIndex(2); 

//By text 
select.selectByVisibleText("stanza doppia"); 
+0

我尝试,但它dowsn't工作:( 我有一个公共页面上的同一个问题:http://bachecalloggi.listedisinistra.org/index.php/annunci 这是代码: ' 公共无效testFilterAds ()抛出异常{ \t driver.findElement(By.xpath( “//按钮[含有(文本(), 'Ricerca Avanzata')]”))点击(); \t \t WebElement elemnet = driver.findElement (By.id( “filter_energy_class”)); 选择选择=新选择(elemnet); // 通过值 select.selectByValue( “b”); //通过索引 select.selectByIndex(2); //通过文本 select.selectByVisibleText(“B”); \t Thread.sleep(500000); }' – Razzo

+0

什么是错误? – Saifur

+0

没有选择任何东西:( – Razzo