我正在使用Selenium(python)在网站上自动执行一些测试。由于Selenium的API非常有限,所以我正在使用Web扩展来执行高级JavaScript测试。
将结果从 webextension 传达回 python 脚本的正确方法是什么?到目前为止,我正在通过控制台.log消息传递它们,但如果目标站点覆盖 console.log()(),它会失败(无论如何它似乎很黑客)。
我可能会通过以下方式解决这个问题:
首先, 如果你可以控制 Web 扩展的源代码,那么我会添加一个简单的方法,将你的数据序列化为一种很好的格式,然后将其存储到浏览器的本地存储中。
!注意:如果您还没有使用过这个,请不要担心,网上有多个示例。您必须考虑到您的数据还被限制为5-10 MB的本地存储限制(因浏览器而异)。
其次,
您必须读取localStorage
值。我看到两种方法可以做到这一点:
-
利用底层基于 Selenium 的框架的 API(通常它们都有某种 localStorage/cookie API 调用)。例如:在大多数框架中,您可以使用 .execute() 命令(或 executeScript)来设置本地存储值:
browser.execute('localStorage.setItem('PerduData', <dataObject>);');
-
在脚本中使用纯 JavaScript 来设置相同的本地存储值
我相信有多种方法可以实现相同的结果。如果您擅长处理文件,还可以考虑将数据对象存储在其他浏览器或计算机 (OS)存储区域。
最后 ,我认为实现这一目标的最优雅方法是使用一些第三方存储,该存储具有公开的API,最终可以通过Webextension和Selenium脚本访问。
希望这有帮助!