2

Java の Selenium/WebDriver で自動化されたテスト ケースを作成しています。既存の WebElements をポーリングするために次のコードを実装していますが、私は Java の専門家ではないため、このメソッドをよりクリーンに記述する方法があるかどうか疑問に思っていました。

/** selects Business index type from add split button */
    protected void selectBusinessLink() throws Exception
    {
        Calendar rightNow = Calendar.getInstance();
        Calendar stopPolling = rightNow;
        stopPolling.add(Calendar.SECOND, 30);
        WebElement businessLink = null;
        while (!Calendar.getInstance().after(stopPolling))
        {
            try
            {
                businessLink = findElementByLinkText("Business");
                businessLink.click();
                break;
            }
            catch (StaleElementReferenceException e)
            {
                Thread.sleep(100);
            }
            catch (NoSuchElementException e)
            {
                Thread.sleep(100);
            }
            catch (ElementNotVisibleException e)
            {
                Thread.sleep(100);
            }
        }
        if (businessLink == null)
        {
            throw new SystemException("Could not find Business Link");
        }
    }

この特定の行は、コードが少し汚れていると私に思わせるものです:

 while (!Calendar.getInstance().after(stopPolling))
4

2 に答える 2

2

このようなことができます

long t = System.currentMillis();   // actual time in milliseconds from Jan 1st 1970.
while (t > System.currentMillis() - 30000 )  {
   ...
于 2012-11-02T15:28:45.060 に答える
0

システム時間をミリ単位で使用するのはどうですか?

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, 30);
long stopPollingTime = calendar.getTimeInMillis();
while (System.currentTimeMillis() < stopPollingTime) {
  System.out.println("Polling");
  try {
    Thread.sleep(100);
  } catch (InterruptedException e) {
  }
}
于 2012-11-02T15:28:49.580 に答える