2017-06-16 132 views
0

我的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> 

我怎么能写这样硒脚本,并且每次当我运行时间应随机选择。

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

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

你试过了吗?首先访问一个特定的值(使用一个固定的索引),然后改变该常量得到一个随机值。你有办法找到解决方案。如果您在这两个步骤中遇到问题,请先从一些研究开始。但请不要简单地要求解决方案,甚至不尝试。 – AxelH

+0

我试过了,它不起作用,这就是为什么我要求帮助。 – User

回答

0

硒是不是我的事,但

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(); 
} 
+0

当我使用'getOptions()'从下拉列表中获取所有选项时,我需要使用'选择'。但'Select'仅用于'select'标记名,对于其他标记名如'div'或'ul',它显示出像**这样的错误org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是“select “但是”div“** – User

+0

@用户我真的不能帮助更多,我自己不使用'Selenium'。但是在HTML中,下拉是创建为''。不与'

'这可能是您的第一个错误。 – AxelH