2017-05-30 14 views
0

更新ごとに要素を確認する必要があります。低温:7.54時間後に値がLowrtemperature:3.78,5.87,9.32などに変更されます。毎回値が変更されます。しかし、私はあなたのテストの目的は、テキストが更新されることを保証することであるべきwebdriverをWebDriver(java)でページがリロードされたかどうかを確認する方法はありますか?

WebElement PrecipitationLabel_14_L= (new WebDriverWait(driver, 30)).until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[@id='webFor']/div/div[1]/div[1]/div/div[2]"))); 
String Precipationclass= PrecipitationLabel_14_L.getAttribute("class"); 
return Precipationclass; 
+0

あなたは私たちに正確な要件の更新を検討することはできますか? "7.54"と "3.78"の間の "Lowrtemperature"の異なる値を比較したいですか?関連するHTML DOMの更新を検討してください。ありがとう – DebanjanB

+0

値を比較する必要はありません。一度更新されると、ドライバは更新値を取得する必要があります。ドライバは更新後にxpath値をとる必要があります。 – RamanaMuttana

答えて

1

セレンを使用して要素を取得するために.how変更の直後の更新された値を取得するためにドライバが必要です。 ページがリロードされるかどうかは、ここでは無関係である必要があります。ここで

が更新されるテキストを待っている例です:

WebDriverWait wait = new WebDriverWait(driver, 30); 

String temperatureBefore = wait.until(textToBeDifferent(By.cssSelector(...), "")); 
String temperatureAfter = wait.until(textToBeDifferent(By.cssSelector(...), temperatureBefore)); 

とカスタムウェイター:

public static ExpectedCondition<String> textToBeDifferent(final By locator, final String text) { 
    return new ExpectedCondition<String>() { 
    @Override 
    public String apply(WebDriver driver) { 
     try { 
     String elemText = driver.findElement(locator).getText().trim(); 
     return elemText.equals(text) ? null : elemText; 
     } catch (NoSuchElementException e) { 
     return null; 
     } catch (StaleElementReferenceException e) { 
     return null; 
     } 
    } 

    @Override 
    public String toString() { 
     return String.format("text ('%s') to not be found by %s", text, locator); 
    } 
    }; 
} 
+0

これは、元 –

+0

@Corey Goldberg、それについては確かですか?私は、エンドユーザーの観点から見ると、彼が見る価値が同じであれば、ページは更新されないと言いたい。ここでのコンテキストはエンドツーエンドのテストで、テストはユーザーのやりとりに焦点を合わせ、技術的な動作には焦点を当てません。 @FlorentB。 –

+0

not()とtextToBe()のExpectedConditionsを組み合わせても同じことはできませんか? ExpectedConditions.not(ExpectedConditions.textToBe(By ...、initialTemp)).... – Grasshopper

関連する問題