我需要在每次更新后验证一个元素.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;
}
答案 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);
}
}