如何使用javascript编辑iframe中的html

我正在致力于使我的业务中的一个流程自动化,其中一部分是通过Salesforce发送电子邮件。我们无法访问SF API,必须通过Salesforce发送电子邮件,以保持同事可以搜索通信。

我需要使用可在Salesforce中选择的模板,但是此功能在IE(我们的RPA解决方案使用的IE)中不起作用,因此我需要从头开始构建此电子邮件。

我看到两个选项:

  1. 使用HTML使用正确的变量重新创建格式。这需要插入/注入/操作HTML。
  2. 将格式复制到内存/剪贴板中,编程编辑后粘贴到SF界面
此问题将与选项1有关。我将单独发布关于第二个选项的其他问题,并编辑此问题以包括该链接。编辑:Here是指向其他问题的链接!

现在进入问题: 我们使用蓝棱镜RPA软件套件。它有可能将JavaScript片段插入网站并随后调用它们。我希望我可以创建一个重新创建模板的javascript片段,插入它,然后调用它。我在过去的一周里一直在做这件事,但几乎没有取得任何进展。

我现在可以将基本文本添加到必填字段中,但是我发现为了能够使用模板结构,我需要使用不同的、基于HTML的字段。我发现此字段位于IFRAME内。

在本周之前,我没有任何使用javascript的经验(幸运的是,它似乎类似于c#,在这方面我确实有经验),现在这个iframe把我难倒了。显然,当你使用Selenium或类似的东西时,你可以将驱动程序切换到新的IFRAME,但我没有这个选项,它需要通过表面自动化来完成。在javascript和控制台中,我无法让它指向iframe中的单独文档。显然,iFrame内容没有以这种方式合并到更大的网页中。

因此,我的问题是:如何使用javascript将焦点切换到IFRAME?那么我如何通过javascript编辑iframe内容呢?如有任何帮助、提示等,我们将不胜感激!


解决方案

如果您在浏览器中转到"开发人员工具"(F12或右键单击"检查"),则可以使用inpsect工具获取您要查找的路径。IFRAME只是窗口内的另一个窗口,一旦有了"基本路径",您就可以从IFRAME基本路径进一步延伸到窗口中。

您可以通过我所知的两种方式之一访问框架;

document.getElementById('the frame you are looking for goes here').contentWindow.targetFunction();

和/或

window.frames[0].otherfunctions

其中0是窗口中框架的第N个顺序,以防有其他框架。

找到该路径后,您可以通过从iFrame中获取指向该iFrame的路径,与该iFrame上的子元素进行交互。

一些需要注意的事情。帧尚未加载,因此请确保加载了所需的帧,并且在运行时没有其他帧在屏幕上移动它。另外,确保子帧在同一个域中,我认为调用javascript在跨域时会有问题,即它不能工作(在那里需要更正,但可能取决于组设置)

提供一些代码或页面布局,并可以给您一个代码示例,但在我的头顶上,格式将如下所示

var doc=window.frame[0] 变量事物=getElementById(doc.getElementByPath(‘maybePath’)

‘对您需要的内容执行一些设置操作,如设置innerhtml

相关文章