2017-05-30 86 views
0

我需要在每次更新後驗證一個元素.Ex:低溫:7.54經過一段時間後,數值變爲低溫:3.78,5.87,9.32 ...等等,每次經過一段時間(時間變化)後數值都在變化。但我需要的驅動程序,以獲得更新的值afterthe變化。如何使用硒的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」中「低溫」的不同值。請考慮更新相關的HTML DOM。謝謝 – DebanjanB

+0

我不需要比較值,一旦它得到更新,然後我需要驅動程序應該得到更新的值,所以驅動程序應該採取xpath值後更新 – RamanaMuttana

回答

1

測試的目的應是確保文本進行更新,以獲得元素。 頁面是否重新加載在這裏應該是無關緊要的。

下面是一個例子等待文本進行更新:

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,你確定嗎?我想說,從最終用戶的角度來看,如果他看到的價值保持不變,頁面不會更新。這裏的上下文是端到端測試,其中測試側重於用戶交互而不是技術行爲。 –

+0

@FlorentB。 Not()和textToBe()的ExpectedConditions的組合是否完成同樣的事情? ExpectedConditions.not(ExpectedConditions.textToBe(By ...,initialTemp)).... – Grasshopper

相關問題