有没有办法检查元素是否使用WebDriver(java)重新加载?

时间:2017-06-12 11:23:50

标签: java selenium-webdriver

我需要在每次更新后验证一个元素.Ex:低温:7.54经过一段时间后,值变为Lowrtemperature:3.79,然后再到其他值,这里的值每次都会在一段时间(时间变化)后发生变化。但我需要驱动程序在更改后获取更新的值。如何使用selenium webdriver获取元素,此处页面不重新加载只重新加载元素值

public boolean waitForTextToChange(WebElement element, String currentText) {
                return !element.getText().equals(currentText);
            }


public String Lowertemperature_14_L(){
    WebElement element = driver.findElement(By.xpath(".//*[@id='webForm:sensorContainer']/div[@class='tile tile23 show-all hide-tiny']/div[@class='meteo-line1']/div[1]/div[@class='icon']/div[@class='icon-label0']"));
   String currentText = element.getText();
   WebDriverWait wait = new WebDriverWait(driver, 10);
   wait.until(waitForTextToChange(element, currentText));
   return currentText;
   }

2 个答案:

答案 0 :(得分:0)

您可以使用自定义预期条件等待文本更改

$scope.condition = {"SHOW":'(model1  === 'test1')'}
<div ng-show="condition['SHOW]"></div> something like this.

用途:

public static ExpectedCondition<Boolean> waitForTextToChange(final WebElement element, final String currentText) {
    return new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(WebDriver arg0) {
            return !element.getText().equals(currentText);
        }
    };
}

答案 1 :(得分:0)

//这里第一个值是ex.4.56,然后在20秒之后,值被更新为3.67然后每隔20秒跨越一次(时间在8,10,6之后的某个时间变化,依此类推) 。我使用了wait.until(Expectedconditions.stalenessOf(element))来检查值是否更新,然后我们从ui获取一个新的更新值,并在更新值之前和之后进行验证

/** It deletes old files.
 *  @param string $dir Directory
 *  @param int $secs Files older than $secs seconds
 *  @param string $pattern Files matching $pattern
 */
function delete_oldfiles($dir,$secs,$pattern = "/*")
{
    $now = time();
    foreach(glob("$dir$pattern") as $f) {
      if (is_file($f) && ($now - filemtime($f) > $secs)) unlink($f);
    }
}