使用网络驱动程序清除Chrome上的缓存

时间:2017-10-11 17:07:52

标签: javascript selenium-webdriver jmeter selenium-chromedriver

我们正在使用Jmeter selenium webdriver测试Web应用程序。 作为HTTP管理器doenst工作,我们试图使用下面的代码清除缓存。由于某种原因,这是令人费解的。我们需要实现清晰的缓存机制。除此之外,我们还尝试了隐身模式许多其他选项,因为gooogle建议没有运气。 我们也试图在浏览器浏览器(chrome:// settings / clearBrowserData)后点击(Sendkeys)Enter清除浏览窗口。 Driver.close()不会根据场景需求帮助我们。

请提出一些想法/建议如何在浏览器启动后执行Enter。

非常感谢您的时间和帮助。

    var pkg=JavaImporter(org.openqa.selenium,org.openqa.selenium.support.ui) //import java selenium packages
var Thr=JavaImporter(java.lang.Thread) //import Thread sleep packages
var wait = new pkg.WebDriverWait(WDS.browser,30) //import WebDriverWait Package
WDS.browser.get('chrome://settings/clearBrowserData')
Thr.Thread.sleep(5000)
WDS.browser.switchTo().frame("settings")
var ChkBox = WDS.browser.findElement(pkg.By.xpath('//*[@id="delete-form-data-checkbox"]'))
ChkBox.click()
////*[@id="clear-browser-data-overlay"]/div[4]
//wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath('//*[@id="clear-browser-data-commit"]')))
//wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath('//*[@id="clear-browser-data-overlay"]/div[4]')))
var ClearCache = WDS.browser.findElement(pkg.By.xpath('//*[@id="clear-browser-data-commit"]'))
ClearCache.click()
wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath('//*[@id="privacy-section"]/h3')))

1 个答案:

答案 0 :(得分:1)

当前的chrome浏览器清除缓存按钮已被阴影化(其为ShadowDOM)。我们将无法直接与其互动。我们将需要标识其JS路径并使用executeScript函数执行单击。无需为executeScript函数导入Java包。

只需添加以下行以清除脚本中的缓存即可。

WDS.browser.executeScript('return document.querySelector("body > settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("#advancedPage > settings-section:nth-child(1) > settings-privacy-page").shadowRoot.querySelector("settings-clear-browsing-data-dialog").shadowRoot.querySelector("#clearBrowsingDataConfirm").click();')

使用JMeter + WebDriver进行愉快的测试