如何使用UiPath从Google Chrome JavaScript警报弹出窗口提取数据

如何使用UiPath从Google Chrome JavaScript警报弹出窗口提取数据,javascript,google-chrome,popup,rpa,uipath,Javascript,Google Chrome,Popup,Rpa,Uipath,我想提取文本,然后使用UiPath单击Google Chrome JavasScript警报弹出窗口中的按钮 具体而言,我遇到以下问题: 以对话框为目标的选择器是什么?您如何找到它? 从对话框中选择并提取文本的选择器是什么?您如何找到它? 单击对话框中的“确定”按钮的选择器是什么?您如何找到它? 我知道,对于web自动化,UiPath建议在大多数情况下使用IE,因为UiPath可以使用其浏览器COM对象以更“本地”的方式与它交互。其他浏览器将有限制,在版本更新的情况下可能会遇到困难。然而,在某些

我想提取文本,然后使用UiPath单击Google Chrome JavasScript警报弹出窗口中的按钮

具体而言,我遇到以下问题:

以对话框为目标的选择器是什么?您如何找到它? 从对话框中选择并提取文本的选择器是什么?您如何找到它? 单击对话框中的“确定”按钮的选择器是什么?您如何找到它? 我知道,对于web自动化,UiPath建议在大多数情况下使用IE,因为UiPath可以使用其浏览器COM对象以更“本地”的方式与它交互。其他浏览器将有限制,在版本更新的情况下可能会遇到困难。然而,在某些情况下是不可能使用IE的,比如在我的工作中,我们与谷歌就工作达成了协议,我们的许多内部网站在IE中不工作

要完成UiPath 3级在线高级认证:作业2-生成年度报告,您必须创建一个机器人来执行以下操作:

导航到 使用用户名和密码登录 单击各种元素在系统中导航 从JavaScript警报弹出窗口交互和提取数据 问题是UiExplorer找不到正确的选择器,这使得从Google Chrome弹出窗口获取文本变得困难,因为它的呈现方式与IE不同,并且不公开文本属性。以下是来自acme测试站点的一个片段,用于创建警报以帮助定义选择器,以下是UiPath:

上传报告 上传报告 jQuerydocument.readyfunction{ $'input[type=file]'。在'change'上,准备加载; 功能准备程序{ files=event.target.files; $'upload-file-info'.htmlfiles[0]。名称 } jQuery'buttonUpload'。单击函数事件{ event.stopPropagation;//停止发生内容 event.preventDefault;//完全停止工作 var vTaxID=jQuery'vendorTaxID'.val; var rYear=jQuery'reportYear'.val; //如果什么都没有填满 如果vTaxID==| | rYear=={ 警告“请填写供应商出租车和报告年度!”; 回来 } 如果文件类型===“未定义”{ 警报“请选择报告文件”; 回来 } //创建formdata对象并添加文件 var数据=新的FormData; jQuery.eachfiles,functionkey,value{ data.appendkey,value; }; console.log“…”; jQuery.ajax{ url:/cmajax.php?cmd=uploadReport&cvTaxID=+vTaxID+&crYear=+rYear, 类型:POST,, 数据:数据, cache:false, 数据类型:“json”, processData:false,//不处理文件 contentType:false,//将content-type设置为false,因为jQuery将告诉服务器它的查询字符串请求 } .alwaysfunctionmsg{ console.log'done'; 如果msg.responseText==“坏” 我们遇到了一些问题。; 否则{ console.logmsg; 警报“报告已上载-确认id为”+msg.responseText; } }; } };
以下内容可能不是您想要的,但它可能提供了一种替代解决方案。在大多数RPA工具中,警报自动化可能有点麻烦,所以我喜欢使用警报覆盖技巧

基本上,您将插入一个函数,该函数将覆盖显示弹出窗口的默认警报函数,并将其内容重新路由到UiPath可以访问的位置,例如自定义文本框

更详细地说,您可以在某处创建一个文本框

var body = document.getElementsByTagName("body")[0];
var text = document.createElement("input");
text.id = "alertOutput";
body.insertBefore(text, body.firstChild);
。。。然后用消息重新路由覆盖警报功能

function alert(message) {
    var text = document.getElementById("alertOutput");
    text.value = message; // or .innerText
}
现在,页面上的每个警报都会将其内容直接发送到文本框,而不是显示弹出窗口


PS:我故意不在代码中使用jQuery,但看到它在您的网站上可用,您可以利用它。

我设法提取了信息,并继续使用: *当弹出窗口未显示时,使用indicate元素在整个chrome窗口上获取OCR文本,因为这似乎会给我的计算机上的UIPath studio带来问题,并在分配活动中使用字符串操作获取需要的文本。 *将热键输入发送到chrome窗口以关闭弹出窗口


我在默认设置中使用了谷歌OCR英语,比例2,…

谢谢你的回答。从JS的角度来看,它确实是合乎逻辑的,而且非常优秀。我相信这会帮助很多用户,但正如你自己指出的,这是一个小的解决办法。我希望您不介意我暂时不回答这个问题,看看是否有人对这个问题有“本地”UiPath方法,这对我和UiPath都有帮助 社区