1

我用虚拟用户填充我的网站,我已经随机化了所有内容,除了出生月份和国家/城市。

你能帮我找到一个简单的方法吗?这是我现在使用的代码,但它把德国硬编码进去了:(

Select user_country = new Select (driver.findElement(By.id("user_country_id")));
user_country.selectByVisibleText("Germany");

以下是国家/地区下拉列表的 html:

<div class="custom-select">
    <select id="user_country_id" class="validate" name="user[country_id]" data-cities-path="/country/id-replace/cities">
        <option value="51baca9bf325db50be000012">Japan</option>
        <option value="51baca9bf325db50be000015">China</option>
        <option value="51baca9bf325db50be00001c">Australia</option>
        <option value="51baca9bf325db50be000023">Thailand</option>
    </select>
</div>
4

4 回答 4

5

你为什么不通过随机索引选择?

user_country.selectByIndex(new Random().nextInt(user_country.getOptions().size()));
于 2013-07-12T22:08:58.333 回答
1

您可以将标签放置在数组中,然后使用java.util.Random类从中选择一个随机元素。然后,当您生成一个国家的随机名称时,您可以将其传递给Select对象。

String[] countriesArray = {"Japan", "Germany", "Australia", "Thailand"};
String randomLabel = countriesArray[new Random().nextInt(countriesArray.length)];

Select user_country = new Select (driver.findElement(By.id("user_country_id")));
user_country.selectByVisibleText(randomLabel);
于 2013-07-12T15:27:27.443 回答
1

我设置它的方法是使用单独的随机方法,例如:

public int RandomSelectInt(List<IWebElement> elements)
{
    int options = elements.Count;
    Random random = new Random();
    return random.Next(1, options);
}

然后,当您将项目添加到列表中时,您可以在代码中调用此方法,例如:

public void selectCountry()
{ 
    IWebElement countryOptions = driver.FindElement(By.id("user_country_id");
    List<IWebElement> countryList = countryOptions.FindElements(By.TagName("Option")).ToList(); 
    new SelectElement(countryOptions).SelectByIndex(MethodPath.RandomSelectInt(countryList));
}

我希望这有帮助

于 2013-07-31T15:25:17.527 回答
1

试试这个

         long x = 1191L;
         long y = 1349L;
         Random r = new Random();
         long named = x+((long)(r.nextDouble()*(y-x)));


               /*WebElement elem = driver.findElement(By.id(""));
                    new Select(elem).selectByIndex(""+named);*/

                    Select dropdown = new Select(driver.findElement(By.xpath("//div[6]/div/a/span")));
                    dropdown.selectByValue(""+named);
                    Thread.sleep(1000);
于 2014-02-04T14:51:32.210 回答