3

我正在使用以下下拉菜单:

<select id="id_time_zone" name="time_zone" onchange="validate_field($(this), [validate_required])">
    <option value="">Please Select</option>
    <option value="1">UTC-12</option>
    <option value="2">UTC-11</option>
    <option value="3">UTC-10</option>
    <option value="4">UTC-9</option>
    </select>

我正在尝试做的事情:我正在尝试编写一个返回当前选定文本的程序。例如,如果选择“UTC-12”,我的方法将返回 String timezone="UTC-12"。

到目前为止我已经尝试过:

@FindBy(id = "id_time_zone")
WebElement editSubOrg_timezone;

// Reads and returns field
public String readField() {
tmp = editSubOrg_timezone.getText();
return tmp;  
}

不起作用,getText() 返回下拉列表中的所有值

@FindBy(id = "id_time_zone")
WebElement editSubOrg_timezone;

// Reads and returns field
public String readField() {
tmp = editSubOrg_timezone.getAttribute("value") ;
return tmp;  
}

不行,getAttribute("value")返回的是值(即1,2,3,4),不是对应显示的文字

4

3 回答 3

2
@FindBy(id = "id_time_zone")
WebElement editSubOrg_timezone;

public String readField() {
   Select select = new Select(editSubOrg_timezone);
   WebElement tmp = select.getFirstSelectedOption();
   return tmp.getText();  
}
于 2013-07-26T03:03:18.957 回答
1

如果元素被选中,则isSelected()方法返回。元素可以是下拉列表中的元素,也可以是复选框或单选按钮。true

 @FindBy(id = "id_time_zone")
WebElement editSubOrg_timezone;

// Reads and returns field
public String readField() {
   List<WebElement> options = editSubOrg_timezone.findElements(By.tagName("option"));
   for (WebElement option : options) {
      if (option.isSelected) {
           return option.getText();
      }
   }
   return null;  
}
于 2013-07-26T17:27:57.513 回答
0

我使用以下方法(在 C# 中)来获取所选项目的文本:

public string getSelectedLabel(ddlDropListID)
{
   string selected;
   SelectElement selectOption = new SelectElement(ddlDropListID);
   selected = selectOption.SelectedOption.Text;
   return selected;
}
于 2014-10-22T09:03:35.347 回答