2014-11-04 59 views
0

我有代碼選擇選項:硒的webdriver如何從選擇選項菜單中隨機選擇一個排除選項

Select kraj = new Select (driver.findElement(By.id("kraj"))); 
kraj.selectByIndex(new Random().nextInt(user_country.getOptions().size())); 

此代碼是好的,但我想排除選擇選項之一是隨機的。 我該怎麼做?

selectByIndex隨機指標全部,但我想第一個索引將不會是隨機的(稱爲總是相同的第一指數「 - 您choice--」

+0

不太確定我明白。您是否想要在嘗試選擇隨機選項時說要排除第一個索引(默認選項)? – shri046 2014-11-04 19:44:13

+0

是的,正好是 – ivan 2014-11-04 23:08:51

回答

-1

試試這個

// Assume the select has 5 options 
Random random = new Random(); 

// Get a random number between 0 and 3 (that is size - 1, random.nextInt() generated is 0 inclusive, 4 exclusive. 
int optionIndex = random.nextInt(user_country.getOptions().size() - 1); 

// Increment optionIndex by 1 to pick an option between 1 to 4 
kraj.selectByIndex(optionIndex++); 

上述代碼基本上與random.nextInt(range)相反,其中0是唯一的,範圍-1是包含性的。

0

添加幾行代碼的定義範圍

Random randomOption = new Random();  
int startOption = 1; //assuming "--your choice--" is index "0" 
int endOption = user_country.getOptions().size()); // end of range 

int number = startOption + randomOption .nextInt(endOption - startOption); 

//然後做你的東西

Select kraj = new Select (driver.findElement(By.id("kraj"))); 
kraj.selectByIndex(number); 
+0

我不明白這一點:'(endOption - startOption + 1)'僅僅是'(endOption - startOption)'是不夠的? – ivan 2014-11-04 23:38:52

+0

在這種情況下你是對的。您只能使用(endOption - startOption) – Saifur 2014-11-05 04:14:39

0

@ivan嘗試這個

Select menu = new Select(driver.findElement(By.xpath(""))); menu.selectByVisibleText("Enter the option which you want to select");

0

你可以試試這個:

int random=0; 
    do{ 
    random=new Random().nextInt(user_country.getOptions().size()); 
    }while(random==0); 

    Select kraj = new Select(driver.findElement(By.id("kraj"))); 
    kraj.selectByIndex(random); 

上述循環將持續至的隨機值出來不等於 '0'。如果隨機值不同,那麼它將從循環中出來並選擇選擇菜單的相關索引。

可以在同時(隨機== 0)從「0」改變的值以附帶在範圍內的任何其它值「0至user_country.getOptions()的大小() - 1」,這將被排除在選擇之外。

相關問題