是否可以在使用Selenium的网页上运行自动测试并强制它用本地的另一个替换远程资源?
喜欢替换它:
<html>
...
<script href="http://cnd.foo.bar/lib.js"/>
...
</html>
带
<html>
...
<script href="http://localhost:3000/lib.js"/>
...
</html>
答案 0 :(得分:0)
您可以使用以下命令更改该脚本的网址:
<tr>
<td>runScript</td>
<td>document.querySelector('script[src="http://cnd.foo.bar/lib.js"]').setAttribute('src', 'http://localhost:3000/lib.js')</td>
<td></td>
</tr>
但是当你执行你的Selenium脚本时,浏览器已经全部下载了CDN javascript,什么都不会发生。
您可以删除对CDN js的引用,将对本地javascript的引用添加到您的DOM:
<tr>
<td>runScript</td>
<td>var sc = document.querySelector('script[src="http://cnd.foo.bar/lib.js"]');sc.parentNode.removeChild(sc);</td>
<td></td>
</tr>
<tr>
<td>runScript</td>
<td>var js = document.createElement('script'); js.src = 'http://localhost:3000/lib.js'; document.head.appendChild(js);</td>
<td></td>
</tr>
这将加载新的JavaScript。但也许CDN的一些脚本将在页面加载时执行。
IMO最佳解决方案是在端口80上运行localhost,然后在主机文件中将CDN URL设置为127.0.0.1。