2

我有一个脚本(在<script></script>标签内),每次加载页面时都会执行该脚本。在WebDriver中加载页面之前是否可以删除WebElement以防止该脚本执行?在WebDriver中加载页面之前删除部分HTML - Selenium&Python


我在的思路思考的东西:

以某种方式获取原料HTML代码(也许能使源或东西),去除部分(硒或解析器),“注入”编辑的代码返回到Selenium(Firefox WebDriver或者PhantomJS),最后在该网站上的所有页面上执行。

有没有可能做到这一点,或者这可能是不可能的设计?

+0

您是否有权访问原始HTML? –

+0

我不知道你的意思是什么。但我可以在网站上看到什么。我可以通过使用像driver.find_element_by_tag_name()这样的适当方法将该html保存为字符串。get_attribute('outerHTML')(如果我没有记错,我现在不在我的主计算机上。为了不运行该脚本,并且不加载该页面,这是无用的,因为我无法找到一个元素,因此在没有加载页面的情况下获得原始html数据。 – Clone

+1

Selenium会提出请求,可能您要做的所有事情都是在页面加载完成后和脚本运行),你可以做什么(它不会很漂亮,但是......)是为你正在运行测试的浏览器(例如FF或Chrome)创建一个补充来删除这个脚本URL,然后保存它的配置文件,这个配置文件可以在启动测试时指出,什么会阻止脚本运行 – Tom

回答

1

如果您安装了selenium-requests,您可以对页面进行GET请求,处理加载的html/etc,然后,然后放置在选项卡中。

插入处理后的结果可能会很棘手,因为您可能还需要设置当前的浏览器URL以匹配(只需插入它将导致跨域加载脚本,相对路径等问题) - 也许在那里是覆盖(或允许压倒一切的),该硒与预处理的信息

硒要求使得使用一个使用运行的webdriver的Cookie该域和请求库的请求接收“获取”响应的一种方式模拟该webdriver发送的默认HTTP标头。结果是使用webdriver的状态创建的低级HTTP请求和响应。这是必需的,因为Selenium接口是非常高级的,并且在打开页面和浏览DOM方面做的事情在Python中并不是真正可行的。

相关问题