如何用Selenium用页面中的本地资源替换远程资源?

时间:2018-03-23 14:03:37

标签: selenium selenium-webdriver webdriver-io

是否可以在使用Selenium的网页上运行自动测试并强制它用本地的另一个替换远程资源?

喜欢替换它:

<html>
  ...
  <script href="http://cnd.foo.bar/lib.js"/>
  ...
</html>

<html>
   ...
   <script href="http://localhost:3000/lib.js"/>
   ...
</html>

1 个答案:

答案 0 :(得分:0)

您可以使用以下命令更改该脚本的网址:

<tr>
    <td>runScript</td>
    <td>document.querySelector('script[src=&quot;http://cnd.foo.bar/lib.js&quot;]').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=&quot;http://cnd.foo.bar/lib.js&quot;]');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。