服务器API

askInput

askInput可以用在有人值守RPA自动化中。某些情况下,有人值守的RPA自动化脚本需要在执行过程中,提取用户的一些输入,以便继续执行后继的脚本。askInput API能执行这样测操作。askInput显示对话框,请求用户输入信息,然后RPA脚本可以继续它的执行。

下面是API的定义:

export async function askInput(inquiry: InputInquiryInfo): Promise<any>

它接收参数inquiry,返回用户输入的结果的Promise或在等待时间结束时返回缺省值的Promise。参数inquiry有下面的结构:

interface InputInquiryInfo {
    title?: string,
    message: string,
    prompt?: string,
    defaultValue: string,
    base64Image?: string,
    waitSeconds: number
}

调用askInput传递文字或图片的参数,它在执行时将参数显示在相关界面上。如果在设计器中执行,会直接作为对话框弹出。

下面是askInput 函数参数的描述:

  • title:可选项,显示提示标题
  • message:提示消息
  • prompt:可选项,输入框在没有输入时候显示的信息
  • defaultValue:可选项,输入框预先设置的缺省值
  • base64Image:可选项,base64编码的图片文件
  • waitSeconds:可选项,对话框等待时间,如果设置了,askInput就会在等待时间结束后返回,如果不设置会永久等待。

其中:

  • 为获得base64Image所需的base64编码的图片,在Selenium web自动化中,可直接调用driver.takeScreenshot();在Windows自动化中,可调用模型对象的takeScreenshot()。如果从文件中读取,可以调用fs.readFileSync读取内容到buffer,再调用buf.toString('base64')转换成base64字符串。
  • waitSeconds参数可结合defaultValue一起使用,设置缺省值和等待时间,如果用户响应了,返回用户设置的值,如果用户没有在设置时间间隔内响应,返回缺省值。

下面提供了函数的样例代码:

    const { askInput } = require('leanrunner');

    (async function () {
        let inquiry = {
            title: '验证码信息1',
            message: '请输入图片验证码中的文字,并点击确定按钮', //required
            prompt: '输入验证码文字',
            defaultValue: 'CIKb',
            base64Image: 'iVBORw0KGgoAAAANSUhEUgAAAF4AAAAmCAIAAADCwbuVAAACS0lEQVR42tWaMW7DMAxFOXTo0FsU6GFygg5Ftw5divb+gxPAReCKEvX5SUluoCGwI5l6/iIpKrIt+nz/fG3n/sjCGZ6cjrSMRlpwhkRHo0s6aIm/88nCqXbZL+bSkZTVdBSRa9qcCtJvDfQ1xpvsXrQn07rrvU7QkbjwWnRA67vmtgARdGajIRaUl473ESl0JMtpadNxbePmVulkaeqMaOLBZQSdNDSaDuJEErOSlOU2Cg0x22l0CJEmoyFSwZTUEaRTPMt+IoTm5e1ZN9u+y+vD3k5FR++BeDRVKAgdF5rC+svH+94qwzau03HNoCPGWAWFYpRcNMfxW2i6XB6fPveG0+mjqXqpQh0utWs0eMCqokH0YqCx6VRtk2rovX3RCyeIBqej0YDryEZjJxzaNmmB1A5lAppfF/4XDe5fImgcvmYEGjC/OKJx+d0jmvv3LqkcNHjpLwWNNx4dcRSNoMOrxhaREaG6GXCBhlDNnQVIJ4rGtRMBgze4oCK+hhZOH02LjguNa6dXdcN0hMJ9c2GMGCW7JWh0hMLpLEBTBeTKhv8FmsIesW3N2kO5KpJGNkxsFIhkB0JjAEpZUDgam84+CB2heDRcrQwM9jga45ZG48prUDTdQgY4VRoNV/27/YzLhqeqxiiscRVv16vKOt4dtaDukY5DswXOqnDhL/Y1NJpq4dKFxlucTiub00eO9FNAOmB9s1s8H4tm8x/ddZ1I4oG/PWb+YQuY8npH0M4rBY0x5iQ0kYiDFCvjdFaqhvjviNEr/Z9rutcVYxT9LFz5RWAAAAAASUVORK5CYII=',
            waitSeconds: 30
    }
    let inputString = await askInput(inquiry);
    console.log('get input', inputString);
})();

在设计器中执行时会显示如下对话框:

如果在LeanRunner服务器上执行,会显示类似的界面:

服务器可让多用户通过浏览器访问,只有启动执行的用户通过浏览器登录才能收到该对话框的通知。如果多个脚本并发执行,或脚本中调用了多次askInput,所有的请求信息会依据时间顺序显示在服务器上。

例如下面,脚本调用了多次askInput,服务器上就会收到多次这样的通知:

getServerConfig

getServerConfig用于获取服务器端的某些配置数据的信息。在RPA执行时,有些数据需要放在服务器端,便于修改和保存。例如,登录某个网站的用户名和密码可能需要经常变化,并且不能泄露,这类敏感数据不适宜放在脚本代码中。因此可以在服务器端维护,脚本执行的时候动态从服务器端获取。也可以有些其它类型的动态配置数据,例如,代理服务器,用于数据驱动脚本的数据等。

函数具有如下的定义:

function getServerConfig<T>(configName: string, defaultValue: T): Promise<T>;

在LeanRunner设计器中执行这个API不会访问服务器,只会直接返回第二个参数值,即缺省值。如果没有缺省值,会直接返回null。

在LeanRunner服务器触发的脚本执行这个API会访问LeanRunner服务器。

下面是样例代码:

let { getServerConfig } = require('leanrunner');
async function getProxies() {
    let config = await getServerConfig('proxies', { 'default': '112.64.53.107:4275' })
    console.log('server config', JSON.stringify(config));
    return config
}

getProxies函数调用getServerConfig API从服务器获取代理服务器列表。

例如在LeanRunner服务器上配置了下面的Proxy:

那么上面的代码样例会返回下面JSON的Promise:

{
    "临时Proxy1": "http://192.168.0.4:8081",
    "长期Proxy1": "http://192.168.0.18:1080"
}

然后用户可枚举返回的代理服务器,选择一个需要的。

results matching ""

    No results matching ""