防止在Selenium Webdriver测试中加载外部内容

防止在Selenium Webdriver测试中加载外部内容,第1张

防止在Selenium Webdriver测试中加载外部内容

解决方法是使用代理。Webdriver与browsermob代理集成得很好: http
://bmp.lightbody.net/

private WebDriver initializeDriver() throws Exception {    // Start the server and get the selenium proxy object    ProxyServer server = new ProxyServer(proxy_port);  // package net.lightbody.bmp.proxy    server.start();    server.setCaptureHeaders(true);    // Blacklist google analytics    server.blacklistRequests("https?://.*\.google-analytics\.com/.*", 410);    // Or whitelist what you need    server.whitelistRequests("https?://*.*.yoursite.com/.*. https://*.*.someOtherYourSite.*".split(","), 200);    Proxy proxy = server.seleniumProxy(); // Proxy is package org.openqa.selenium.Proxy    // configure it as a desired capability    DesiredCapabilities capabilities = new DesiredCapabilities();    capabilities.setCapability(CapabilityType.PROXY, proxy);    // start the driver   ;    Webdriver driver = new FirefoxDriver(capabilities);    return driver;}

编辑:人们经常要求提供http状态代码,您可以使用代理轻松检索它们。代码可以是这样的:

// create a new har with given labelpublic void setHar(String label) {    server.newHar(label);}public void getHar() throws IOException {    // FIXME : What should be done with the this data?    Har har = server.getHar();    if (har == null) return;    File harFile = new File("C:\localdev\bla.har");    har.writeTo(harFile);    for (HarEntry entry : har.getLog().getEntries()) {        // Check for any 4XX and 5XX HTTP status pres        if ((String.valueOf(entry.getResponse().getStatus()).startsWith("4"))     || (String.valueOf(entry.getResponse().getStatus()).startsWith("5"))) { log.warn(String.format("%s %d %s", entry.getRequest().getUrl(), entry.getResponse().getStatus(),         entry.getResponse().getStatusText())); //throw new UnsupportedOperationException("Not implemented");        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5651498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存