什么工具可以获得WPF开发的App的一个页面的所有字符.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么工具可以获得WPF开发的App的一个页面的所有字符.相关的知识,希望对你有一定的参考价值。
Spy++可以抓取普通的winform窗口中的所有字符串,但抓不了像office2013一样的窗口模式,
不管是WPF还是WinForm还是ASP.NET,这些都只是表现层的展现方式不同,而到了后台,所有的都是一样的,都有一个配置文件可以进行配置并读取的。如果你的项目中没有这个文件,那就自己添加一个app.config即可。即添加文件中的应用程序配置文件追问我是为了测试本地化UI,想抓取整个页面的字符串,抓取字符后比较比人眼看要好一些.
追答恩,也可以的。不过滤掉字符就行。
参考技术A UISpy可以.追问我试过,只能抓到一个大框,抓不到整个页面中的字符.
我是为了测试本地化UI,抓取字符后比较比人眼看要好一些.
截个图我看你抓到的是什么。
如何获得完整页面加载的传输大小?
【中文标题】如何获得完整页面加载的传输大小?【英文标题】:How to get transferred size of a complete page load? 【发布时间】:2015-02-13 22:16:55 【问题描述】:使用 Selenium 或 JavaScript,您如何获得已加载页面的(通过网络)传输大小(字节),包括所有内容、图像、css、js等?
首选大小是通过网络传输的大小,即压缩的大小,仅用于发出的请求等。
这是您通常可以在开发工具中看到的,在网络状态栏的右侧:
如果这不可能,是否可以只获得所有加载资源的总大小(没有压缩等)?那将是一个可以接受的替代方案。
浏览器是 Firefox,但如果可以使用其他兼容 Selenium 的浏览器也可以。
我想这可以使用 代理 来完成,但是有没有 JS 或 Selenium 方法来获取这些信息?
如果代理是唯一的方法,那么将使用(或实施)哪一种方法来简化此类任务?只是在设置驱动程序之前用 Java 实现一些东西?
(该解决方案至少可以在 Linux 上运行,但最好也可以在 Windows 上运行。我正在通过 Java 使用 Selenium WebDriver。)
【问题讨论】:
为什么投反对票?谢谢你的帽子。 ;-) Selenium 和 JS 都无法访问电线(网络)。他们只能看到渲染引擎 (DOM)。您将需要其他东西来获取该信息。 【参考方案1】:是的,您可以使用 BrowserMobProxy 来完成。这是一个使用 selenium 代理跟踪来自客户端的网络流量的 java jar。 比如页面加载持续时间,查询字符串到不同的服务等。 你可以得到它 bmp.lightbody.net 。此 api 将创建 .har 文件,其中将包含所有这些 json 格式的信息,您可以使用这些信息来阅读 一个在线工具http://www.softwareishard.com/har/viewer/
【讨论】:
【参考方案2】:为了将来参考,可以通过 javascript 从浏览器请求此信息。但是,在撰写本文时,尚无浏览器支持此特定数据的此功能。 More information can be found here.
同时,对于 Chrome,您可以从性能日志中解析此信息。
//Enable performance logging
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
capa.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
//Start driver
WebDriver driver = new ChromeDriver(capa);
然后你可以像这样获取这些数据
for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE))
if(entry.getMessage().contains("Network.dataReceived"))
Matcher dataLengthMatcher = Pattern.compile("encodedDataLength\":(.*?),").matcher(entry.getMessage());
dataLengthMatcher.find();
//Do whatever you want with the data here.
如果像您的情况一样,您想知道单个页面加载的细节,您可以使用加载前和加载后时间戳,并且只获取该时间范围内的条目。
【讨论】:
【参考方案3】:我已经在 Python 中实现了这一点,这可能会为人们节省一些时间。设置日志记录:
logging_prefs = 'performance' : 'INFO'
caps = DesiredCapabilities.CHROME.copy()
caps['loggingPrefs'] = logging_prefs
driver = webdriver.Chrome(desired_capabilities=caps)
计算总数:
total_bytes = []
for entry in driver.get_log('performance'):
if "Network.dataReceived" in str(entry):
r = re.search(r'encodedDataLength\":(.*?),', str(entry))
total_bytes.append(int(r.group(1)))
mb = round((float(sum(total_bytes) / 1000) / 1000), 2)
【讨论】:
【参考方案4】:Hakello 的回答中提到的性能 API 现在得到了很好的支持(除了 IE 和 Safari 之外的所有东西),并且易于使用:
return performance
.getEntriesByType("resource")
.map((x) => x.transferSize)
.reduce((a, b) => (a + b), 0);
您可以使用executeScript
运行该脚本以获取自上次导航事件以来下载的字节数。无需设置或配置。
【讨论】:
以上是关于什么工具可以获得WPF开发的App的一个页面的所有字符.的主要内容,如果未能解决你的问题,请参考以下文章
WPF的控件没有句柄,但是有啥其他间接方法获得WPF控件的句柄啊。