一旦网页上的iframe将特定的postMessage发送到父窗口,我想让Selenium执行某些操作。为了做到这一点,我需要从测试运行器访问浏览器所在的网页的window
对象(以便我可以直接在测试中观察window
上的postMessages运行者),或以某种方式将浏览器中执行的javascript连接到在节点测试运行器中执行的javascript(将测试运行器的回调传递给将在窗口接收postMessage时调用的浏览器,或其他东西)。有没有办法做到这一点?谷歌对此没有帮助: - (
更新:嗯,executeAsyncScript看起来很有前途;我想知道我是否可以听取postmessages,然后通知测试运行员提供的回调,即收到特定的邮件消息。
答案 0 :(得分:1)
@azangru过去两年你有没有找到解决方案?
我尝试了executeAsyncScript
,理论上它可以工作,除了它似乎阻止其他操作完成直到它结算。
TypeScript中的代码模型:https://gist.github.com/JoshuaKGoldberg/a0c5fe2812a06318e0eb2ffdc9e17021
提起Selenium问题:https://github.com/SeleniumHQ/selenium/issues/5972
与此同时,您可以使用要传输的数据的页面console.info
字符串形式,然后在Selenium中连续轮询日志。不是很好但总比没有好......?