问题:
是否可以告诉受selenium webdriver控制的浏览器不加载来自外部资源的任何内容,或者不加载来自给定域列表的资源?
背景:
我有一个网页,我可以使用Selenium Webdriver针对该网页编写基于Java的测试脚本-
我无法更改页面,我只需要编写测试即可。网站从其他域加载的某些外部内容存在问题。外部的东西是我的测试实际上不需要的一些javascript代码,但是相关页面包括在内。现在的问题。有时,外部源速度过慢,导致Webdriver无法在给定的页面加载超时(20秒)内加载页面。我的测试实际上可以正常运行,因为实际上页面已加载-
所有html都存在,所有内部脚本均已加载并且可以正常工作。
关于此的随机想法:
我可以使用针对不同浏览器的扩展程序,但是我需要使用几种浏览器(即chrome,firefox和phantomjs)运行测试。而且没有像phantomjs扩展这样的东西。如果可能的话,我需要一个完全基于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 label
public 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 codes
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");
}
}
}
问题是: 是否可以告知由selenium webdriver控制的浏览器不从外部源加载任何内容,或者不从给定的域列表加载资源? 背景: 我有一个网页,我用SeleniumWebDriver编写了一个基于java的测试脚本——我不能更改页面,我只需要编写测试。网站从其他域加载的某些外部内容存在问题。外部的东西是一些javascript代码,我的测试实际上不需要这些代码,但是相关页面包含这些代码。现在
在使用morgan中间件记录日志时,我注意到服务器日志中出现了一些频繁且令人担忧的请求。 相关记录器代码 因此,日志的示例如下 不幸的是,我不知道如何重现这样的错误。这是一个潜在的漏洞吗?原木锻造?我在哪里可以找到进一步的信息? 具体来说,这一行的url是“GET”http://example.com/path.php HTTP/1.1”,其中example.com不是我的域,我的服务器也没有设置
问题内容: 我需要在我的站点中显示另一个外部站点的内容。通常标签可以做到这一点。但我的要求不是全部内容,而只是该网站的一部分。例如该网站的布局有3个部分,,,。我的意思是我只想显示一部分。我该怎么做? 我试过了,但是没有用。 问题答案: 这是由于ajax跨域安全性限制,一种技巧是从服务器设置代理脚本,该脚本从不同的站点(域)下载内容,并将该代理用作javascript中的参考。 示例:(proxy
问题内容: 有没有办法用javascript / jquery防止图像加载?我正在从带有图像的html列表构建幻灯片。因此,我想收集所有src数据,然后阻止加载图像。因此,稍后当用户真正需要图像时,我便会加载它。 我在Google上找到了一些延迟加载脚本,但找不到阻止图像加载的方式。 提前致谢。 Edit1: 从答案看来,不可能使用javascript来防止图像加载。 这是一个执行延迟加载的脚本。
我是的长期用户,如果单元测试失败,它将不会发布(也就是将JAR部署到maven repo)。 出于各种原因,我只想使用maven deploy插件,但显然,即使中存在测试失败,我仍将部署该插件。 结果而不只是 编辑它似乎是詹金斯的问题..不能繁殖 我不确定Jenkins为什么或如何强制maven构建在测试失败时继续(我假设这是为了报告),但它没有显示为使其继续而传递的任何选项。这似乎只有当詹金斯说
本文向大家介绍在SAP UI5中加载外部库,包括了在SAP UI5中加载外部库的使用技巧和注意事项,需要的朋友参考一下 可以使用普通脚本标签中的文件插入外部库。SAP UI5还支持JQuery,因此可以通过扩展控制器的标题来完成。 您还可以使用以下命令添加任何外部文件- 您可以导航到以下路径以了解更多详细信息- https://blogs.sap.com/2016/04/22/include-ex