2017-05-29 19 views
-1

很簡單的問題,但是,我遇到了這個問題。我想使用sleep.thread來點擊隨機數字範圍內的按鈕,例如30-50秒。這必須是一個睡眠命令。還有就是在元素點擊一個循環,我試圖做到這一點(我發現這在另一個答案,不是爲我工作)如何設置Thread.sleep爲一個隨機數(Selenium Java)

List<WebElement> textfields = driver.findElements(By.className("_84y62")); 


    System.out.println("total buttons " + textfields.size()); 

     for (WebElement e : textfields) { 
      e.click(); 

       Thread.sleep((long)(Math.random() * 11 + 10)); 
      } 
+1

它不起作用?它是否會導致錯誤,或者不像您期望的那樣睡覺? – James

+1

您是否閱讀過「睡眠」文檔? – chrylis

回答

0

如果我要30-50秒之間暫停我將實現如下:

private void sleepRandomly() { 
    try { 
     Thread.sleep(getMillis()); 
    } catch (InterruptedException e) { 
     Thread.currentThread().interrupt(); 
     throw new RuntimeException(e); 
    } 
} 

private static long getMillis() { 
    return (long) (Math.random() * 20_000 + 30_000); 
} 

記住sleep預計的時間長度睡眠時間以毫秒爲單位。

+0

謝謝你的可靠答案,它工作得很好。以前的代碼只是單擊槽按鈕沒有延遲。 – serengeti

-1

Thread.sleep()方法以毫秒爲單位參數使用值,因此等待50秒,你應該打電話: Thread.sleep(50000)。 要生成在選定範圍內的值,你可以使用簡單的公式 randomNum = minimum + (long)(Math.random() * maximum)

+0

公式已關閉。 'Math.random()* maximum'會給你一個'maximum'的範圍,而不是'maximum - minimum'。 – shmosel

+0

請在投票前檢查代碼。 [鏈接](https://stackoverflow.com/questions/363681/how-do-i-generate-random-integers-within-a-specific-range-in-java) – Tarik

+0

您正在使用**問題* *作爲您的來源?你沒看到問題嗎?'randomNum'可以大於'maximum' *?我不是順風順水的btw。 – shmosel

相關問題