簡體   English   中英

無法在Java中的Selenium Webdriver中選擇下拉列表

[英]unable to select the drop down list in selenium webdriver in java

這是我的硒webdriver代碼

package com.ej.zob.modules;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.Select;
public class Employee {
public void Execute(String TopLink,String UserName,String Password,String Email,String CreatedOn, String RoleName,String FirstName,String LastName, String Company, String Phone ){
LaunchApplication.driver.findElement(By.className(TopLink)).click();
LaunchApplication.driver.findElement(By.id("field-username")).sendKeys(UserName);
LaunchApplication.driver.findElement(By.id("field-password")).sendKeys(Password);
LaunchApplication.driver.findElement(By.id("field-email")).sendKeys(Email);
LaunchApplication.driver.findElement(By.id("field-created_on")).sendKeys(CreatedOn);
//LaunchApplication.driver.findElement(By.tagName("")
LaunchApplication.driver.findElement(By.linkText("Select Role Name")).click();
LaunchApplication.driver.findElements(By.id("field-role_name"));
//LaunchApplication.driver.findElement(By.className("chzn-drop"));
//sel.selectByIndex(5);
//sel.selectByVisibleText(RoleName);
LaunchApplication.driver.findElement(By.id("field-first_name")).sendKeys(FirstName);
LaunchApplication.driver.findElement(By.id("field-last_name")).sendKeys(LastName);
LaunchApplication.driver.findElement(By.id("field-company")).sendKeys(Company);
LaunchApplication.driver.findElement(By.id("field-phone")).sendKeys(Phone);
//LaunchApplication.driver.findElement(By.id("form-button-save")).click();
}

}

這是我的html代碼

<select id="field-role_name" class="chosen-select chzn-done" 
data-placeholder="Select Role Name" name="role_name" 
style="display: none;">

<option value=""></option>
<option value="ADMIN"></option>
<option value="BM"></option>
<option value="SM"></option>
<option value="BT"></option>
<option value="ITOP"></option>
<option value="GUEST"></option>
<option value="COH"></option>
<option value="BEOP"></option>
<option value="SA"></option>
</select>

我想從下拉菜單中選擇“ Admin”。 還要檢查field-role_name的代碼,我也寫了findelemnts(By.id(“ field-role_name”)),由於這個原因,我的下拉列表僅打開了未選擇任何值的位置,因此如何選擇一個值。

從WebElement創建一個Select對象並選擇一個值

Select select = new Select(LaunchApplication.driver.findElement(By.cssSelector("select[id$='field-role_name']"));
select.selectByValue("ADMIN");

如果對象是隱藏的,這將失敗。 “顯示:無”建議這樣做。

如果您無法更改網頁,則選擇隱藏,則必須使用javascript進行選擇。

((JavascriptExecutor)LaunchApplication.driver).executeScript($("option[val=ADMIN]").prop("selected",true);');

使用下面的webdriver代碼從您的方案的下拉列表中選擇一個值:

new Select(driver.findElement(By.id("field-role_name"))).selectByValue("ADMIN");

你可以這樣做

import java.util.ArrayList;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;

public class DropDownHandler 
{
    private WebDriver driver;
    private String parentName;
    private Select fromPort;
    public DropDownHandler(WebDriver driver, String parentName) 
    {
        this.driver = driver;
        this.parentName = parentName;
    }
    public void selectDropDownValue(String selectvalue)
    {
        Select fromPort = new Select(driver.findElement(By.name(parentName)));
        List<WebElement> dropDwonList = new ArrayList<WebElement>();
        dropDwonList = fromPort.getOptions();

        for(WebElement temp:dropDwonList)
        {
            if(temp.getAttribute("value").equals(selectvalue))
            {
                fromPort.selectByValue(selectvalue);
            }
        }   
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM