使用Puppeteer自动化Salesforce Lightning界面的技术问询
Puppeteer自动化Salesforce Lightning界面的问题
我需要用Puppeteer自动化Salesforce Lightning网页界面,该界面没有固定元素ID,还包含Shadow DOM,目前看来只能通过图像识别或直接调用JavaScript API实现自动化。
我已经找到全局变量$A下的AuraInstance,也安装了Salesforce Lightning Inspector并能查看组件树,现在想知道如何通过JavaScript访问Lightning Data Service,还有以下两个具体疑问:
疑问1:获取Aura请求的唯一action ID
通过浏览器网络活动,我找到了可复用的接口URL:https://***.lightning.force.com/aura?r=34&ui-force-components-controllers-recordGlobalValueProvider.RecordGvp.saveQuickActionRecords=1
请求负载如下:
{"actions":[{"id":"2320;a","descriptor":"serviceComponent://ui.force.components.controllers.recordGlobalValueProvider.RecordGvpController/ACTION$saveQuickActionRecords","callingDescriptor":"UNKNOWN","params":{"record":{"apiName":"Event","childRelationships":{},"eTag":"df51c121372ca57e0fbe094d4fba0d1c","fields":{"Activity_Type__c":{"displayValue":null,"value":"Call"},"CountsAgainstTarget__c":{"displayValue":null,"value":""},"Description":{"displayValue":null,"value":null},"EndDateTime":{"displayValue":null,"value":"2023-04-29T09:30:00.000Z"},"OwnerId":{"displayValue":null,"value":"005b0000006KeOSAA0"},"RecordTypeId":{"displayValue":null,"value":"012b0000000Dga3AAC"},"StartDateTime":{"displayValue":null,"value":"2023-04-29T09:00:00.000Z"},"Subject":{"displayValue":null,"value":null},"VisitType__c":{"displayValue":null,"value":"Customer Visit"},"What":{"displayValue":null,"value":{"apiName":"Account","fields":{"Name":{"value":""}},"recordTypeInfo":null}},"WhatId":{"displayValue":null,"value":""},"Who":{"displayValue":null,"value":{"apiName":"Contact","fields":{"Name":{"value":""}},"recordTypeInfo":null}},"WhoId":{"displayValue":null,"value":null},"WhoCount":{"value":null,"displayValue":null}},"id":null,"lastModifiedById":null,"lastModifiedDate":null,"recordTypeId":"012b0000000Dga3AAC","recordTypeInfo":{"available":true,"defaultRecordTypeMapping":true,"master":false,"name":"Event","recordTypeId":"012b0000000Dga3AAC"},"systemModstamp":null,"weakEtag":0},"quickActionName":"NewEvent","contextIds":["005b0000006KeOSAA0"],"fetchFeedItem":true,"recordSaveParams":{"bypassDedupeCheck":false,"triggerAutoResponseEmail":false,"triggerOtherEmail":false,"triggerUserEmail":false,"isAllOrNothing":false,"filterInvalidFields":true,"useDefaultRule":false,"publishEngagementEvent":true,"skipCurrencyConversion":true}}]}
其他参数可通过Cookie获取,但请求中的action ID(如示例中的"2320;a")每次请求都唯一且不同,请问如何获取下一个action ID?
疑问2:映射动态字段ID到Salesforce Classic的固定ID
例如事件主题的动态HTML ID为"combobox-input-144"(每次请求都会变化),如何将其映射到Salesforce Classic中事件主题的固定ID"evt5"?
内容的提问来源于stack exchange,提问作者Kodak
相关产品推荐
相关产品推荐

