从下拉列表中随机选择?

时间:2017-06-16 10:37:01

标签: java selenium-webdriver selenium-chromedriver

我的html示例代码是,

 <div class="list">
    <div class="dropdown">
        <ul role="menu">
            <li class="rsbListItem">one</li>
            <li class="rsbListItem">two</li>
            <li class="rsbListItem">three</li>
            <li class="rsbListItem">four</li>
            <li class="rsbListItem">five</li>
            <li class="rsbListItem">six</li>
            <li class="rsbListItem">seven</li>
            <li class="rsbListItem">eight</li>
        </ul>
    </div>
</div>

我如何为此编写Selenium脚本,每次运行时都应该随机选择。

我试图挑选随机元素,但每次都选择相同的元素。这是我的代码。

List<WebElement> options = driver.findElements(By.xpath("//*[@role='menu']"));
Random rand = new Random();
int list= rand.nextInt(options.size());
options.get(list).click();

2 个答案:

答案 0 :(得分:1)

Selenium不是我的事,但是

List<WebElement> options = driver.findElements(By.xpath("//*[@role='menu']"));

这将返回与您的请求匹配的WebElement列表。所以你应该得到元素(我应该只有一个)来使用它。您也可以使用findElement

然后,您需要获得所选内容中的每个Option

List<WebElement> selects = driver.findElements(By.xpath("//*[@role='menu']"));
Random rand = new Random();
for(WebElement select : selects){
    List<WebElement> options = // get every option in it
    int list = rand.nextInt(options.size());
    options.get(list).click();
}

答案 1 :(得分:0)

// Locate the dropdown menu
WebElement drpdown = driver.findElements(By.id("id of the dropdown menu"));

// click the dropdown menu
drpdown.click();

//Get the list of dropdown options
List<WebElement> itemsInDropdown = driver.findElements(By.id("id of the dropdown list"));

// Get the size of dropdown list
int size = itemsInDropdown.size();

// Generate the random number
int randomNumber = ThreadLocalRandom.current().nextInt(0, size);

// Clicking on random value
itemsInDropdown.get(randomNumber).click();