我不确定我是否理解缓存原则:
@CacheLookup
@FindBy(how = How.ID, using = namespace + signifLvl)
private WebElement sigLvl;
Run Code Online (Sandbox Code Playgroud)
如果我们使用这种Annotation方法,则使用ElementLocator,并且第一次引用该字段时,driver.findElement(by)通过ElementLocator 找到并缓存该元素,以便下次引用它时,它将从缓存中返回.
它看起来取决于ElementLocator和PageObject实例的生命周期.
它也与直接driver.findElement(By);呼叫无关.
我假设,WebElement就像是元素的指针/引用,对吧?因此,如果元素在浏览器中发生变化,它会立即反映到WebElement中.就像在JavaScript中一样.因为所有RemoteWebElement关于元素状态的方法都是对浏览器执行命令/请求.
这样即使在缓存元素中也会反映出这些变化,对吧?