java - 如何在 java 中使用 selenium 获取页面的常规(!)源代码?
问题描述
好的,事情是这样的:你们所有人可能都在想同样的事情:你可以使用
driver.getPageSource();
这是部分正确的。唯一的问题是源代码以一种相当奇怪的方式编译
\"
开始出现。我尝试手动删除它,但仍然不能完全解决问题。
我的意思的一个例子:
正常源代码:
\"query_title\":null}",encoded_title:"WyJoZW5rIl0",ref:"unknown",logger_source:"www_main",typeahead_sid:"",tl_log:false,impression_id:"bbdb1882",filter_ids:
硒输出:
\\\"query_title\\\":null}\",\"encoded_title\":\"WyJoZW5rIl0\",\"ref\":\"br_tf\",\"logger_source\":\"www_main\",\"typeahead_sid\":\"0.6583900225217523\",\"tl_log\":false,\"impression_id\":\"e00060b4\",\"filter_ids\"
这似乎与您必须在某些符号前面加上引号以阻止 java 将其视为这些符号之一的地方相同,但我并不完全理解这种行为,也不知道如何解决它...希望您能提供帮助:)
编辑:替换不起作用,因为它的编译方式。为什么它不起作用的一个例子实际上是在我之前包含的例子中:
原来的:
}",encoded_title:
编译版本:
}\",\"encoded_title\":
将 \" 替换为 " 会将其更改为:
}","encoded_title":
这和原来的不一样...
如果我要替换 \" 什么都没有,我会得到:
},encoded_title:
遗憾的是,它仍然与原始版本不同。这种编译方式我只是不认为替换是一个可行的选择......
解决方案
您可以使用 javascript 使用 outerHTML 或 innerHTML 获取 html(如何从页面获取 HTML 源代码?):
((JavascriptExecutor) driver).executeScript("return document.documentElement.outerHTML;")
((JavascriptExecutor) driver).executeScript("return document.documentElement.outerHTML;")
((JavascriptExecutor) driver).executeScript("return document.all[0].outerHTML")
((JavascriptExecutor) driver).executeScript("return new XMLSerializer().serializeToString(document);")
推荐阅读
- javascript - 每次加载函数时计数器增加
- javascript - 从函数 ES6 中解构一个或多个返回类型
- python - Jupyter:移动到python笔记本第一个单元格的键盘快捷键
- vb.net - Microsoft.TeamFoundation.WorkItemTracking.Client.VerbatimMessageException 未处理
- r - R - 检查错误消息是否是由于缺少参数
- php - 尝试将选定的行从 db 插入新表
- typescript - 为泛型函数分配类型
- wordpress - 从产品列表创建 WooCommerce 订单——批量操作
- vb.net - 合并两个没有任何重复的数组 [VB.NET]
- python - Smartsheet python SDK添加带有单元格链接的行