3
<select id="vehicleTypeName" class="custom-select" name="vehicleTypeName">
<option value="">-Select Style-</option>
<option value="Hatchback">Hatchback Cars</option>
<option value="Sedans">Sedan Cars</option>
<option value="MUV">MPV Cars</option>
<option value="Sport Utilities">SUV Cars</option>
<option value="Luxury Vehicles">Luxury Cars</option>
<option value="Hybrids">Hybrid Cars</option>
<option value="Minivans">Minivans</option>
<option value="Convertibles">Convertible Cars</option>
<option value="Coupe">Coupe Cars</option>
</select>

我已使用此代码验证选项

String label=driver.findElement(By.id("vehicleTypeName")).getText();

logger.info("Brand names are \t" + label );

但它正在打印所有品牌,包括“-Select Style-”这个项目。但我不想打印这个“-Select Style-”值。但我只想验证品牌名称。请帮我解决一下这个。

4

10 回答 10

6

我刚刚为你写了一个快速函数。希望能帮助到你!

/**
 * Get all <code><option/></code> innerHTML attributes
 *
 */
List<String> getAllOptions(By by) {
    List<String> options = new ArrayList<String>();
    for (WebElement option : new Select(driver.findElement(by)).getOptions()) {
        String txt = option.getText();
        if (option.getAttribute("value") != "") options.add(option.getText());
    }
    return options;
}

现在执行:

getAllOptions(By.id("vehicleTypeName"));

将返回:

["Hatchback Cars", "Sedan Cars"...] // of course in List<> representation..
于 2015-01-20T12:39:11.910 回答
3

可以在下面使用它对我有用

Select dropDown = new Select(Driver.findElement()));
List<WebElement> e = dropDown.getOptions();
int itemCount = e.size();

for(int l = 0; l < itemCount; l++)
{
    System.out.println(e.get(l).getText());
}
于 2016-10-12T18:55:20.273 回答
1
List<WebElement> options = driver.findElements(
          By.xpath("//*[@id="vehicleTypeName"]/option"));

List现在您可以轻松地从options排除第一个元素中构造一个新元素:

List<String> text = new ArrayList<>();
for(int i=1; i<options.size(); i++) {
    text.add(options.get(i).getText());
}
于 2015-01-20T13:31:54.120 回答
1

简单的解决方案;

String label = driver.findElement(By.id("vehicleTypeName")).getText().replace("-Select Style-", "");

顺便说一句,这不是一个好习惯。

于 2015-01-20T12:29:21.557 回答
1
WebElement element = driver.findElement(By.xpath("Your xpath here"));
Select select = new Select(element);
List<WebElement> list = select.getOptions();
for(int i=0; i<list.size(); i++)        
    {
        System.out.println(list.get(i).getText());
    }

以上所有行都是连续的代码。工作:a)第 1 点和第 2 点直接定位下拉框 b)在第 3 点中,我们创建一个列表变量“list”并将所有值填充到下拉列表中。c) 在 for 循环中,我们使用 get(i) 根据它们的索引选择每个元素,并使用 getText() 获取它保存的文本。

希望能帮助到你。

于 2016-08-01T06:16:16.180 回答
1

您好,下面的方法可以解决您的问题。你会很容易使用

 public List<String> getAllValues() throws InterruptedException
 {

    Select sel = new Select(DomainName);
    List<WebElement> we = sel.getOptions();
    List<String> ls = new ArrayList<String>();
    for(WebElement a : we)
    {
        if(!a.getText().equals("Select")){
            ls.add(a.getText());
        }
    }
    return ls;
 }
于 2017-06-13T06:06:38.063 回答
0

以下是可能的方法:

1-通过从列表中删除第一个选项

//Locating the Select Dropdown for Vehicle Type
Select sel = new Select(driver.findElement(By.id("vehicleTypeName")));

//Getting all the options present in the dropdown.
List<WebElement> list = sel.getOptions();

//Removing the first dropdown option from the list, i.e., '-Select Style-'
list.remove(sel.getFirstSelectedOption());

//Printing the List
System.out.println("The list without the first element, i.e., 'Select Type' is as under: ");

for(WebElement ele: list)
    System.out.println(ele.getText());

2-通过删除具有文本“-选择样式-”的选项

//Locating the Select Dropdown for Vehicle Type
Select sel = new Select(driver.findElement(By.id("vehicleTypeName")));

//Getting all the options present in the dropdown.
List<WebElement> list = sel.getOptions();

//Removing the dropdown option '-Select Style-' from the list
Iterator<WebElement> iter = list.iterator();
while(iter.hasNext()){
    if(iter.next().getText().equals("-Select Style-")){
        iter.remove();
        break;
    }
}

//Printing the List
System.out.println("The list without the first element, i.e., 'Select Type' is as under: ");
for(WebElement ele: list)
    System.out.println(ele.getText());
于 2015-01-20T15:02:36.873 回答
0

你可以试试这个:

String label=driver.findElement(By.id("vehicleTypeName"));
Select labelSelector = new Select(label);
labelSelector.deselectByValue("");
List<WebElement> allOptions =  labelSelector.getOptions();

然后您可以使用列表,它应该包含value标签中包含某些内容的所有选项。

于 2015-01-20T12:27:20.917 回答
0

试试这个

WebElement lelement = driver.findElement(By.id("vehicleTypeName"));    
Select oSelect = new Select(lelement);
java.util.List <WebElement> elementCount = oSelect.getOptions();
int iSize = elementCount.size();
String [] arrdropdown= new String [iSize];          
for (int j = 0; j < iSize; j++) 
{
    arrdropdown[j]=elementCount.get(j).getText();
}
logger.info("Brand names are \t" + Arrays.toString(arrdropdown));
于 2020-02-26T06:28:57.067 回答
0
//**Selecting all Option Using tagName as Option in List and run foreach loop**
for(WebElement Element:driver.findElements(By.tagName("option")))
{System.out.println(Element.getText());}
于 2021-05-11T19:26:23.890 回答