【发布时间】:2017-02-02 00:25:57
【问题描述】:
我有一个脚本(在<script></script> 标签内),每次加载页面时都会执行该脚本。是否可以在 WebDriver 中加载页面之前删除 WebElement 以防止该脚本执行?
我正在考虑以下内容:
以某种方式获取原始 HTML 代码(可能获取源代码或其他东西),删除部分(使用 selenium 或解析器),将编辑后的代码“注入”回 Selenium(Firefox WebDriver 或可能是 PhantomJS)最后对该网站上的所有页面执行它。
是否有可能做到这一点,或者这可能是设计上不可能的?
【问题讨论】:
-
您可以访问原始 HTML 吗?
-
我不知道你说的原创是什么意思。但我可以在网站上看到什么。我可以使用像 driver.find_element_by_tag_name(
).get_attribute('outerHTML') 这样的适当方法将该 html 保存为字符串(如果我没记错的话,我现在不在我的主计算机上。但是因为我正在尝试不运行该脚本并且不加载该页面是无用的,因为我找不到一个元素,因此在不加载页面的情况下获取原始 html 数据。 -
Selenium 将发出请求,您可能会在页面已经加载(并且脚本运行)之后执行所有操作。你可以做的(它不会很漂亮,但是......),是为你正在运行测试的浏览器(例如 FF 或 Chrome)创建一个补充,以删除这个 URL 的这个脚本,然后保存一个配置文件其中。这个配置文件可以在开始测试时指出,什么会阻止脚本运行。
-
@Tom 谢谢你的回复,汤姆。所以我基本上应该按原样运行代码,通过调用特定方法删除元素,然后以某种方式保存浏览器状态?您能否告诉我应该在 Internet 上查找哪些信息才能使该解决方案成为可能?
-
@Clone,您可以尝试为您的浏览器编写一个简单的扩展程序来“删除”该
标签: python selenium selenium-webdriver selenium-ide selenium-firefoxdriver