2017-05-29 22 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

相关问题