Reputation: 75
My HTML code is here:
<fieldset>
<div class="clearfix">
<div class="clearfix">
<div class="clearfix">
<div class="clearfix">
<div class="qs-formfield-short qs-required">
<label for="stateCountry">State or Province</label>
<span class="k-widget k-dropdown k-header" style="" title="" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="stateCountry_listbox" aria-disabled="false" aria-readonly="false" aria-busy="false">
<span class="k-dropdown-wrap k-state-default" unselectable="on">
<span class="k-input" unselectable="on">Please Select...</span>
<span class="k-select" unselectable="on">
<span class="k-icon k-i-arrow-s" unselectable="on">select</span>
</span>
</span>
My Code is here:
WebElement stateDropDown = driver.findElement( By.xpath("/html/body/form/div[3]/main/div/div/div/span/div/fieldset/div[4]/div[1]/span/span[1]")); List options = stateDropDown.findElements(By.xpath("/html/body/div[1]/div/ul/li[44]"));
for(WebElement opt : options){
if ("Texas".equals(opt.getText()));
opt.click();
System.out.println(opt);
Upvotes: 0
Views: 48101
Reputation: 53
Suppose you want to select JDK 1.8 at this address (JDK dropdown to select java version )
//Click on Country Dropdown
driver.findElement(By.name("JDK")).click();
List<WebElement> allOptions = driver.findElements(By.xpath("//select[@name='JDK']//option"));
System.out.println(allOptions.size());
for(int i = 0; i<=allOptions.size()-1; i++) {
if(allOptions.get(i).getText().contains("JDK 1.8")) {
allOptions.get(i).click();
break;
Upvotes: 0
Reputation: 909
Try smth like this:
Actions action = new Actions(driver);
WebElement optionsList = driver.findElement(By.xpath("//span[contains(@class, 'k-dropdown-wrap')]"));
action.moveToElement(optionsList);
List<WebElement> options = driver.getElemets(By.xpath("//span[contains(@class, 'k-input')]"));
for(WebElement option : options) {
if (option.getText().equals("Texas")) {
option.click();
}
}
Stop writing strange xpath to elements :)
Upvotes: -1