Select 个下拉列表中的元素
Select element from a dropdown
我想在 Joomla 中测试一个应用程序。
我有一个带有此代码的下拉菜单:
<div class="control-group">
<div class="control-label">
<label id="jform_category-lbl" for="jform_category" class="required">
Categoria<span class="star"> *</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 来测试网站。
如何从下拉菜单中选择 select "stanza doppia" 选项?
您是否考虑过使用 Select class
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");
我已经在你提到的上述网站上试过了,它对我有用。
实际上,您需要使用 custom xpath 从下拉列表中选择值并将其存储在列表中。然后点击你想要的值。
有时 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();
}
}
}
}
我想在 Joomla 中测试一个应用程序。 我有一个带有此代码的下拉菜单:
<div class="control-group">
<div class="control-label">
<label id="jform_category-lbl" for="jform_category" class="required">
Categoria<span class="star"> *</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 来测试网站。 如何从下拉菜单中选择 select "stanza doppia" 选项?
您是否考虑过使用 Select class
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");
我已经在你提到的上述网站上试过了,它对我有用。 实际上,您需要使用 custom xpath 从下拉列表中选择值并将其存储在列表中。然后点击你想要的值。
有时 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();
}
}
}
}