Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium webdriver 怎样才能';是否清除Selenium中的缓存WebElement列表?_Selenium Webdriver - Fatal编程技术网

Selenium webdriver 怎样才能';是否清除Selenium中的缓存WebElement列表?

Selenium webdriver 怎样才能';是否清除Selenium中的缓存WebElement列表?,selenium-webdriver,Selenium Webdriver,有人能帮我吗?在Java中,每次执行时都可以清除Selenium所在的缓存元素吗 我正在测试一个无法访问HTML代码的应用程序,其组件没有固定ID(是动态的),因此我需要通过其内容恢复元素,不仅如此,应用程序的url不会更改,因为组件是通过ajax/jQuery生成的 因此,当使用已经在其他场合使用过的xPath时,selenium不会执行新的搜索,而是始终返回相同的元素 在我用来定位页面上Enter按钮的xpath下方: WebElement findElement = driver.fin

有人能帮我吗?在Java中,每次执行时都可以清除Selenium所在的缓存元素吗

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

因此,当使用已经在其他场合使用过的xPath时,selenium不会执行新的搜索,而是始终返回相同的元素

在我用来定位页面上Enter按钮的xpath下方:

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

如果使用X页面并在Y页面上重复相同的路径,则始终获取页面元素X。如何清除缓存?

每次要使用该元素时,您只需调用代码来查找元素

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

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

是否有异常抛出,表示找不到元素。可能是在您的情况下,webdriver无法找到页面y中的元素,因此前一个元素仍然保留。

不会引发异常,并始终返回第一次使用xpath时找到的相同元素。Selenium可能找不到元素,因为应用程序的url没有改变,我相信组件是通过Ajax/JQuery“加载”的,整个应用程序执行都显示在主页上,URL在localhost:8083上开始和结束。在第y页中搜索元素之前,可以尝试在元素中存储null。即使不起作用,第x页中的元素可能仍然在DOM中,即使在第Y页中也是如此。如果有两个元素具有相同的内容,则必须验证其DOM。因此,默认情况下,selenium将只获取第一个元素,或者您必须指定所需的第n个元素。findElement=driver.findElements(By.xpath(//button[contains(,'entra')]))[n];每次运行findElement,但始终返回相同的元素。我希望在每次需要使用xpath时清除缓存以强制搜索,然后在同一变量上使用新的xpath进行do find元素