lr常用函数总结_第1页
lr常用函数总结_第2页
lr常用函数总结_第3页
lr常用函数总结_第4页
lr常用函数总结_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 48 lr常用函数总结 _reg_save_param(参数名 ,LB=左边界 ,RB=右边界,LAST);/注册函数,在参数值出现的前面使用,注册成功时返回值为 0,注册失败时返回值为 1。左右边界需根据TreeView里相关步骤的 SeverResponse 代码来确定。用以上函数能获取第一个符合条件的数值。 _reg_save_param(参数名 ”,LB= 左边界 ”,RB= 右边界,Ord=All,LAST);/当参数有多个值时,加上 Ord=All”后可获取所有的数值。注册成功后, 参数名 _count表示取得的数值个数, 参数名 _1为第一个数值, 参数名 _2为第二个数值。 _save_string(“ 字符串变量 ”, 参数名 )/将字符变量里的值传递给指定参数。通过该函数来改变 DataFile 类型参数的数值。 _eval_string(参数名 )/取得参数的数值。可取得已注册参数或 DataFile 类型参数的数值。 eval就是 evaluation的缩写。 2 / 48 sprintf(char * string , const char*format_string,args);/字符串赋值函数 Action() int index=56; charfilename64,*suffix=txt; sprintf(filename,log_%d.%s,index,suffix); lr_output_message(Thenewfilenameis%s,filename); return 0; Output: Thenewfilenameislog_ 3 / 48 *strcat(char*to,constchar*from);/将一字符串追加到另一字符串后面 7. web_find(find_time,What=XX-03-0118:21:,LAST);/增加检查点 ,检查 “XX -03-0118:21:” 这个字符串是否出现在当前页面上。 find_time 为自己任意输入的检查点名称。 8. 事务函数 lr_end_sub_transaction/标记子事务的结束以便进行性能分析 lr_end_transaction/标记 LoadRunner 事务的结束 lr_end_transaction_instance/标记事务实例的结束以便进行性能分析 lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并发送错误消息 4 / 48 lr_get_trans_instance_duration/获 取事务实例的持续时间 lr_get_trans_instance_wasted_time/获取事务实例浪费的时间 lr_get_transaction_duration/获取事务的持续时间 lr_get_transaction_think_time/获取事务的思考时间 lr_get_transaction_wasted_time/获取事务浪费的时间 lr_resume_transaction/继续收集事务数据以便进行性能分析 lr_resume_transaction_instance/继续收集事务实例数据以便进行性能分析 lr_set_transaction_instance_status/设置事务实例的状态 5 / 48 lr_set_transaction_status/设置打开事务的状态 lr_set_transaction_status_by_name/设置事务的状态 lr_start_sub_transaction/标记子事务的开始 lr_start_transaction/标记事务的开始 lr_start_transaction_instance/启动嵌套事务 lr_stop_transaction/停止事务数据的收集 lr_stop_transaction_instance/停止事务数据的收集 lr_wasted_time/消除所有打开事务浪费的时间 lr_end_sub_transaction/标记子事务的结束以便进行性能分析 r_end_transaction/标记 LoadRunner 事务的结束 lr_end_transaction_instance/标记事务实例的结束以便6 / 48 进行性能分析 lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并 9. 命令行分析函数 lr_get_attrib_double/检索脚本命令行中使 用的 double类型变量 lr_get_attrib_long/检索脚本命令行中使用的 long类型变量 lr_get_attrib_string/检索脚本命令行中使用的字符串 10. 信息性函数 lr_user_data_point/记录用户定义的数据示例 lr_whoami/将有关 Vuser 脚本的信息返回给 Vuser 脚本 lr_get_host_name/返回执行 Vuser 脚本的主机名 7 / 48 lr_get_master_host_name/ 返 回 运 行LoadRunnerController 的计算机名 11. 字符串函数 lr_eval_string/用参数的当前值替换参数 lr_save_string/将以 NULL结尾的字符串保存到参数中 lr_save_var/将变长字符串保存到参数中 lr_save_datetime/将当前日期和时间保存到参数中 lr_advance_param/前进到下一个可用参数 lr_decrypt/解密已编码的字符串 lr_eval_string_ext/检索指向包含参数数据的缓冲区的指针 lr_eval_string_ext_free/释放由 lr_eval_string_ext 分8 / 48 配的指针 lr_save_searched_string/在缓冲区中搜索字符串实例,并相对于该字符串实例,该缓冲区 的一部分保存到参数中 12. 消息函数 lr_debug_message/将调试消息发送到输出窗口 lr_error_message/将错误消息发送到输出窗口 lr_get_debug_message/检索当前的消息类 lr_log_message/将输出消息直接发送到文件,此文件位于Vuser脚本目录中。该函数有助于防止输出消息干扰 TCP/IP通信。 lr_output_message/将消息发送到输出窗口 lr_set_debug_message/为输出消息设置消息类 lr_vuser_status_message/生成格式化输出并将其打印到9 / 48 ControllerVuser 状态区域。 lr_message/将消息发送到 Vuser日志和输出窗口 13. 操作函数 web_custom_request 允许您使用 HTTP 支持的任何方法来创建自定义 HTTP请求 web_image 在定义的图像上模拟鼠标单击 web_link在定义的文本链接上模拟鼠标单击 web_submit_data 执行 “ 无条件 ” 或 “ 无上下文 ” 的表单 web_submit_form 模拟表单的提交 web_url加载由 “URL” 属性指定的 URL 14. 身份验证函数 身份验证函数 web_set_certificate 使 Vuser 使用在10 / 48 InternetExplorer 注册表中列出的特定证书 身份验证函数web_set_certificate_ex 指定证书和密钥文件的位置和格式信息 身份验证函数 web_set_user 指定 Web 服务器 的登录字符串和密码,用于 Web 服务器上已验证用户身份的区域 15. 缓存函数 缓存函数 web_cache_cleanup 清除缓存模拟程序的内容 16. 检查函数 检查函数 web_find 在 HTML 页内搜索指定的文本字符串 检查函数 web_global_verification 在所有后面的 HTTP 请求中搜索文本字符串 检查函数 web_image_check验证指定的图像是否存在于 HTML页内 检查函数 web_reg_find 在后面的 HTTP 请求中注册对 HTML11 / 48 源或原始缓冲区中文本字符串的搜索 web_find与 web_reg_find 比较: 1、 这两个函数函数类型不同, WEB_FIND 是普通函数,WEB_REG_FIND 是注册函数 2 、 WEB_FIND 使 用时必 须开启 内容检 查选项 ,而WEB_REG_FIND 则不没有此限制 3、 WEB_FIND 只能只用在基于 HTML 模式录制的脚本中, 而WEB_REG_FIND 没有此限制 4 、 WEB_FIND 是 在返回 的页面 中进行 内容查 找,WEB_REG_FIND 是在缓存中进行查找 5、 WEB_FIND 在执行效率上不如 WEB_REG_FIND 17. 连接定义函数 连 接 定 义 函 数 web_disable_keep_alive 禁用Keep-AliveHTTP 连接 12 / 48 连接定义函数 web_enable_keep_alive启用 Keep-AliveHTTP连接 连接定义函数 web_set_connections_limit 设置 Vuser在运行脚本时可以同时打开连接的最大数目 18. 并发组 web_concurrent_end 标记并发组的结束 web_concurrent_start 标记并发组的开始 19. cook函数 web_add_cookie 添加新的 Cookie或修改现有的 Cookie web_cleanup_cookies删除当前由 Vuser存储的所有 Cookie web_remove_cookie 删除指定的 Cookie 20. 关联函数 13 / 48 web_create_html_param将 HTML页上的动态信息保存到参数中。 web_create_html_param_ex 基于包含在 HTML 页内的动态信息创建参数。 关联函数 web_url 语法: Int Web_url(const char *name, const char * url, , EXTRARES,LAST) 返回值 成功时返回 LR_PASS (0),失败时返回 LR_FAIL (1)。 参数: 14 / 48 Name: VuGen 中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。 url:页面 url 地址。 List of Attributes EXTRARES:分隔符,标记下一个参数是资源属性的列表了。 List of Resource Attributes LAST:属性列表结束的标记符。 说明 Web_url 根据函数中的 URL 属性加载对应的 URL,不需要上下文。 只有 VuGen处于 URL-based或者 HTML-based的录制模式时,web_url才会被录制到。 可以使用 web_url 模拟从 FTP 服务器上下载文件。 web_url 函数会使 FTP服务器执行文件被真实下载时的操作。除非手工指定了 FtpAscii=1,下载会以二进制模式完成。 15 / 48 在录制选项中, Toos Recording Option 下, Recording选项中,有一个 Advanced HTML选项,可以设置是否录制非 HTML资源,只有选择了 “Record within the current scrpt step” 时, List of Resource Attributes 才会被录制到。非 HTML资源的例子是 gif 和 jpg图象文件。 通过修改 HTTP 头可以传递给服务器一些附加的请求信息。使用 HTTP 头允许请求中包含其他的内容类型,象压缩文件一样。还可以只请求特定状态下的 web 页面。 所有的 Web Vusers , HTTP 模式下的 WAP Vusers 或者回放模式下的Wireless Session Protocol,都支持 web_url函数。 web_image 语法: Int web_image (const char *StepName, , EXTRARES, , LAST ); 返回值 16 / 48 成功时返回 LR_PASS (0),失败时返回 LR_FAIL (1)。 参数: StepName: VuGen 中树形视图中显示的名称,在自动事务处理中也可以用做事务 的名称。 List of Attributes: SRC 属性是一定会被录制到的,其他的 ALT、 Frame、 TargetFrame、Ordinal则是有的话会被录制到。 1、 ALT:描述图象的元素。用鼠标指向图象时,所浮出来的文字提示。 2、 SRC:描述图象的元素,可以是图象的文件名 . 如: 。也可以使用 SRC/SFX 来指定图象路径的后缀。所有拥有相同此后缀的字符串都会被匹配到。 3、 Frame:录制操作时所在的 Frame 的名称。 4、 TargetFrame:见 List of Attributes 的同名参数。 5、 Ordinal:参见 Web_link 的同名参数。 17 / 48 List of Attributes: LR常用函数 1. Intweb_reg_save_param(参数名 ,LB=左边界,RB=右边界 ,LAST);/注册函数,在参数值出现的前面使用,注册成功时返回值为 0,注册失败时返回值为 1。左右边界需根据 TreeView 里相关步骤的 SeverResponse 代码来确定。用以上函数能获取第一个符合条件的数值。 2. web_reg_save_param(参数名 ”,LB= 左边界 ”,RB= 右边界 ,Ord=All,LAST);/当参数有多个值时,加上 Ord=All” 后可获取所有的数值。注册成功后, 参数名 _count表示取得的数值个数, 参数名 _1为第一个数值,参数名 _2为第二个数值。 3. lr_save_string(“ 字符串变量 ”, 参数名 )/将字符变量里的值传递给指定参数。通过该函数来改变DataFile类 型参数的数值。 4. lr_eval_string(参数名 )/取得参数的数值。可取得已注册参数或 DataFile 类型参数的数值。 eval18 / 48 就是 evaluation 的缩写。 5. int sprintf(char * string , const char*format_string,args);/字符串赋值函数 Action() int index=56; charfilename64,*suffix=txt; sprintf(filename,log_%d.%s,index,suffix); lr_output_message(Thenewfilenameis%s,filename); return 0; Output: Thenewfilenameislog_ 6. char*strcat(char*to,constchar*from);/将一19 / 48 字符串追加到另一字符串后面 7. web_find(find_time,What=XX-03-0118:21:,LAST);/增加检查点 ,检查 “XX -03-0118:21:” 这个字符串是否出现在当前页面上。 find_time为自己任意输入的检查点名称。 8. 事务函数 lr_end_sub_transaction/标记子事务的结束以便进行性能分析 lr_end_transaction/标记 LoadRunner 事务的结束 lr_end_transaction_instance/标记事务实例的结束以便进行性能分析 lr_fail_trans_with_error/将打开事务的状态设置为LR_FAIL并发送错误消息 lr_get_trans_instance_duration/获取事务实例的持续时间 20 / 48 lr_get_trans_instance_wasted_time/获取事务实例浪费的时间 lr_get_transaction_duration/获取事务的持续时间 lr_get_transaction_think_time/获取事务的思考时间 lr_get_transaction_wasted_time/获取事务浪费的时间 lr_resume_transaction/继续收集事务数据以便进行性能分析 lr_resume_transaction_instance/继续收集事务实例数据以便进行性能分析 lr_set_transaction_instance_status/设置事务实例的状态 lr_set_transaction_status/设置打开事务的状态 lr_set_transaction_status_by_name/设置事务的状态 21 / 48 lr_start_sub_transaction/标记子事务的开始 lr_start_transaction/标记事务的开始 lr_start_transaction_instance/启动嵌套事务 lr_stop_transaction/停止事务数据的收集 lr_stop_transaction_instance/停止事务数据的收集 lr_wasted_time/消除所有打开事务浪费的时间 lr_end_sub_transaction/标记子事务的结束以便进行性能分析 r_end_transaction/标记 LoadRunner 事务的结束 lr_end_transaction_instance/标记事务实例的结束以便进行性能分析 lr_fail_trans_with_error/将打开事务的状态 设置为22 / 48 LR_FAIL并 9. 命令行分析函数 lr_get_attrib_double/检索脚本命令行中使用的 double类型变量 lr_get_attrib_long/检索脚本命令行中使用的 long类型变量 lr_get_attrib_string/检索脚本命令行中使用的字符串 10. 信息性函数 lr_user_data_point/记录用户定义的数据示例 lr_whoami/将有关 Vuser 脚本的信息返回给 Vuser 脚本 lr_get_host_name/返回执行 Vuser 脚本的主机名 lr_get_master_host_name/ 返 回 运 行LoadRunnerController 的计算机名 23 / 48 11. 字符串函数 lr_eval_string/用参数的当前值替换参数 lr_save_string/将以 NULL结尾的字符串保存到参数中 lr_save_var/将变长字符串保存到参数中 lr_save_datetime/将当前日期和时间 保存到参数中 lr_advance_param/前进到下一个可用参数 lr_decrypt/解密已编码的字符串 lr_eval_string_ext/检索指向包含参数数据 的缓冲区的指针 lr_eval_string_ext_free/释放由 lr_eval_string_ext 分配的指针 lr_save_searched_string/在缓冲区中搜索字符串实例,并24 / 48 相对于该字符串实例,该缓冲区的一部分保存到参数中 12. 消息函数 lr_debug_message/将调试消息发送到输出窗口 lr_error_message/将错误消息发送到输出窗口 lr_get_debug_message/检索当前的消息类 lr_log_message/将输出消息直接发送到文件,此文件位于Vuser脚本目录中。该函数有助于防止输出消息干扰 TCP/IP通信。 lr_output_message/将消息发送 到输出窗口 lr_set_debug_message/为输出消息设置消息类 lr_vuser_status_message/生成格式化输出并将其打印到ControllerVuser 状态区域。 lr_message/将消息发送到Vuser日志和输出窗口 25 / 48 13. 操作函数 web_custom_request 允许您使用 HTTP 支持的任何方法来创建自定义 HTTP请求 web_image 在定义的图像上模拟鼠标单击 web_link在定义的文本链接上模拟鼠标单击 web_submit_data 执行 “ 无条件 ” 或 “ 无上下文 ” 的表单 web_submit_form 模拟表单的提交 web_url加载由 “URL” 属性指定的 URL 14. 身份验证函数 身份验证函数 web_set_certificate 使 Vuser 使用在InternetExplorer 注册表中列出的特定证书 身份验证函数web_set_certificate_ex 指定证书和密钥文件的位置和格式信息 26 / 48 身份验证函数 web_set_user 指定 Web 服务器的登录字符串和密码,用于 Web 服务器上已验证用户身份的区域 15. 缓存函数 缓存函数 web_cache_cleanup 清除缓存模拟程序的内容 16. 检查函数 检查函数 web_find 在 HTML 页内搜索指定的文本字符串 检查函数 web_global_verification 在所有后面的 HTTP 请求中搜索文本字符串 对 loadrunner 中的帮助文档部分常用函数进行整理,类似的放在一起。 可以使用文档结构图方便查看 =文档结构图)。 C Language Functions 字符串操作函数 1、 strcat: Concatenates two strings.27 / 48 连接 2 个字符串 2、 strcpy: Copies one string to another.复制一个字符串到另 一个中 注意在 Vugen文件中,必须明确声明 C函数不返回整数 eg.下面的例子使用 strcpy 复制 “c: tmp” 字符串到字符数组 fullpath 中,使用 strcat 为一个目录名称 fullpath追加一个反斜线,然后为 fullpath 追加文件名称。 char fullpath1024, * filename = ; strcpy(fullpath, c:tmp); strcat(fullpath, ); strcat(fullpath, filename); 28 / 48 lr_output_message (Full path of file is %s, fullpath); 输出 Output: (9): Full path of file is c:tmp 3、 strchr: Returns the pointer to the first occurrence of a character in a string.返回字符串中首次出现指定字符的位置。 4、 strrchr: Finds the last occurrence of a character in a string.找出字符串中最后一次出现指定字符的位置。 char *strrchr( const char *string, int c ); 注意在 Vugen文件中,必须明确声明 C函数不返回整数 29 / 48 eg. 下面的例子使用 strchr在 string的字符串中查找字符x 的首次出现的位置,使用 strrchr 查找字符 x 的最后一次出现的位置。 char * string = His Excellency the Duke of Exeter; char * first_x, * last_x; first_x = (char *)strchr(string, x); lr_output_message (The first occurrence of x: %s, first_x); last_x = (char *)strrchr(string, x); lr_output_message (The last occurrence of x: %s, last_x); 输出 Output: (7): The first occurrence of x: xcellency the Duke of Exeter 30 / 48 (10): The last occurrence of x: xeter 5 、 strcmp: Compares two strings to determine the alphabetic order.比较 2个字符串的字母顺序。 返回结果: 6、 stricmp: performs a case-insensitive comparison of two strings.操作 2 个字符串大小写不敏感的比较。 eg. 下面的例子比较 string1 和 string2 两个字符串,这 2个字符串除了 string1 中的 “quick” 是小写而 string2 中的是大写之外其余都是相同的。 strcmp是大小写敏感的,返回一个不相等的比较结果。 stricmp 忽略大小写,返回一个31 / 48 相等的结果。 int result; char tmp20; char string1 = The quick brown dog jumps over the lazy fox; char string2 = The QUICK brown dog jumps over the lazy fox; result = strcmp( string1, string2); / Case-sensitive comparison if(result 0) strcpy(tmp, greater than); else if(result strcpy(tmp, less than); else 32 / 48 strcpy(tmp, equal to); lr_output_message (strcmp: String 1 is %s string 2, tmp); result = stricmp(string1, string2 ); / Case-insensitive comparison if( result 0 ) strcpy( tmp, greater than ); else if( result strcpy( tmp, less than ); else strcpy( tmp, equal to ); lr_output_message( stricmp: String 1 is %s string 2, tmp ); 输出 Output: 33 / 48 (17): strcmp: String 1 is greater than string 2 (28): stricmp: String 1 is equal to string 2 7、 strdup: Duplicates a string.复制字符串 char *strdup( const char *string ); 8、 strlwr: Converts a string to lower case.把字符串转 换成小写 注意在 Vugen文件中,必须明确声明 C函数不返回整数 eg. 在这个例子中,一个虚拟用户的组名被转 换为大写。不过, lr_whoami 函数返回组名作为静态缓冲区并且这样的缓冲区不能被使用,如果需要使用,必须创建这个静态缓冲区的副本。 strdup 创建静态缓冲区 groupname_static 的一个副本,在新的缓冲区中的字符串 groupname 使用 strupr 被转换成大写。 34 / 48 int id; char * groupname_static, * groupname; / Get the group name from VuGen lr_whoami (&id, &groupname_static, NULL); lr_output_message (groupname=%s, groupname_static); / Make a copy of groupname_static so we can change it groupname = (char *)strdup(groupname_static); groupname = (char *)strlwr(groupname); lr_output_message (lower case groupname=%s, groupname); free(groupname); 输出 Output: 35 / 48 (8): groupname=None (14): lower case groupname=none 9、 strupr: Converts a string to upper case.把字符串转 换成大写。 char *strupr( char *string ); 注意在 Vugen文件中,必须明确声明 C函数不返回整数 eg.在这个例子中,一个虚拟用户的组名被转换为大写。不过, lr_whoami 函数返回组名作为静态缓冲区并且这样的缓冲区不能被使用,如果需要使用,必须创建这个静态缓冲区的副本。 strdup 创建静态缓冲区 groupname_static 的一个副本,在新的缓冲区中的字符串 groupname 使用 strlwr 被转换成小写。 int id; 36 / 48 char * groupname_static, * groupname; / Get the groupname from VuGen lr_whoami (&id, &groupname_static, NULL); lr_output_message (groupname=%s, groupname_static); / Make a copy of groupname_static so we can change it groupname = (char *)strdup(groupname_static); groupname = (char *)strupr(groupname); lr_output_message (Upper case groupname=%s, groupname); free(groupname); 输出 Output: 37 / 48 (8): groupname=None (14): Upper case groupname=NONE 10、 strlen: Returns the length of a string.返回一个 字符串的长度 注意在 Vugen文件中,必须明确声明 C函数不返回整数 eg. 下面的例子循环 str字符串,找到第一个非数字的字符。strlen 确定 str的长度 len。如果这个 while循环已经迭代完 len次,暗示到了这个字符串的末尾,循环终止返回结果。 int is_digit, i = 0; char * str = 1234567k89; unsigned int len = strlen(str); do 38 / 48 if (i = len) lr_output_message (No letters found in string); return -1; is_digit = isdigit(stri+); while (is_digit); lr_output_message (The first letter appears in character %d of string, i); 输出 Output: (18): The first letter appears in character 8 of string ? strcpy 函数 ? 拷贝一个字符串到另一个字符串中 39 / 48 strcpy(str,Hello ) ; ? strcat 函数 ? 添加一个字符串到另一个字符串的末尾 strcat(str,World !); lr_message(str: %s,str); ? strcmp 函数 ? 比较两个字符串,如果相等返回 0 strcmp(string1, string2); ? if (strcmp(dcity,acity)!=0) ? lr_output_message(current toCity=%s, acity); 40 / 48 ? atoi 函数 ? 转换一个字符串为一个整型 Cint = atoi(Cstring); lr_output_message( Cint = %d,Cint); ? itoa 函数 ? 根据给定的进制,转换一个整型数据为字符串 Cint = 100; itoa(Cint,Cstring,10); lr_output_message( Cstring = %s,Cstring); ? int sprintf(char * string , const char*format_string,args); ? 格式化数字字符串 41 / 48 sprintf 能够将整数打印到字符串中。 如: ? 把整数 123 打印成一个字符串保存在 s 中。 sprintf(s, %d , 123); /产生 123 ? 可以指定宽度,不足的左边补空格: sprintf(s, %8d%8d, 123, 4567); /产生: 123 4567 ? 连接字符串 ? sprintf 能够一次连接多个字符串 ? 例: char s64; 42 / 48 sprintf(s, %s love %s., I, ocean); /产生: I love ocean. lr_output_message(%s,lr_eval_string(s); ? 例:参数名称格式化输出到变量中 sprintf(str2,Param_%d,1); lr_message(str2: %s,lr_eval_string(str2); ? lr_save_string(字符串变量 ,参数名 ) ? 将字符变量里的值传递给指定参数。通过该函数来改变 Data

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论