2014-12-23 28 views
0

任何人都可以帮助我,请在Java中清除Selenium每次执行的缓存元素。如何清除Selenium中的缓存WebElement列表?

我正在测试一个无法访问HTML代码并且其组件没有固定ID(是动态的)的应用程序,所以我需要通过其内容恢复元素,不仅如此,应用程序不会更改,因为组件是通过ajax/jQuery生成的。

因此,当使用已在另一场合使用过的xPath时,硒并不会执行新的搜索并始终返回相同的元素。

下面我用它来定位页面上的Enter键中的XPath:

WebElement findElement = driver.findElement(By.xpath("//button[contains(.,'Entrar')]")); 

如果您使用X页面,重复的Y形相同的路径,始终让页面元素X.我如何清除缓存?

回答

0

是否有任何异常抛出说元素无法找到。可能在你的case页面y元素中找不到webdriver,所以前一个元素仍然存在。

+0

不会引发异常,并始终返回第一次使用时找到的相同元素的xpath。有可能Selenium没有找到元素,因为应用程序的url没有改变,我相信组件是通过Ajax/JQuery“加载”的,整个应用程序的执行被显示在主页面上,URL开始并且在本地主机上结束:8083 – kubo

+0

在搜索页面y中的元素之前,可以尝试在元素中存储null。即使如果它没有工作,可能页面x中的元素仍然在DOM中,即使在页面Y中。如果有两个元素具有相同的内容,则必须验证它的DOM。因此,默认情况下,硒只会获取第一个元素,或者您必须指定您需要的第n个元素。 findElement = driver.findElements(By.xpath(“// button [contains(。,'Entrar')]”))[n]; – Vaish

+0

谢谢Vaish,页面有多个相同内容的元素... – kubo

0

您只需调用代码即可在每次要使用该元素时查找元素。

findElement = driver.findElement(By.xpath("//button[contains(.,'Entrar')]")); 

因此,每次使用该元素时,都会找到页面中的新元素。

+1

每次运行findElement,但总是返回相同的元素。我想清除缓存来强制搜索,每次我需要使用xpath – kubo

+0

然后在同一个变量上查找元素,但新的xpath – Sighil