如果您需要为具有文件上传功能的 Web 应用程序设置监控或加载测试,请使用 “每个步骤脚本工具 “来记录脚本。
文件上传限制
每个步骤脚本工具支持将文件上传到外部 URL 进行录制。 您可以在“每个步骤”脚本中记录最多 100 MB 的上传数据(用于负载测试)和最多 20 MB 的上传数据(用于监控脚本)。
例如,您可以为负载测试记录四个 25 MB 文件或一个 100 MB 文件的上传。 或者,您可以记录上传两个文件大小为 10 MB 的文件或一个 20 MB 的文件以进行 Web 性能监控。
工作原理
Dotcom 监视器没有本地可用存储。 若要模拟文件的上载过程,系统需要先从公共 URL 将文件下载到脚本,然后再执行上载步骤。 因此,首先,您需要提供一个测试文件,该文件将由 Dotcom 监视器在上传过程中使用。 因此,Dotcom-Monitor 将从提供的 URL 下载文件到系统云存储,并在每次执行脚本时在上载过程中使用它。 有两种方法可以将测试文件提供给 Dotcom 监视器。
从外部 URL 下载文件
要使用来自外部 URL 的文件,请将最大 100 MB 的测试文件(监控脚本最大为 20 MB)放入可公开访问的 URL,例如 Amazon S3 存储桶、Azure 存储或 AWS CloudFront CDN 等 CDN 服务。 然后,将文件上传步骤记录到”每步记录器”中。 录制步骤时,系统将提示您提供指向测试文件的链接。 系统将下载该文件,并在上载操作中使用它。
在脚本中录制文件下载
或者,您可以记录文件下载并选择 下载 的文件以在脚本中记录上传步骤。 如有必要,可以通过在录制后编辑脚本代码区域中的相关行来更改文件名和链接以及下载超时。
最佳实践
默认情况下,Dotcom 监视器执行脚本中的所有步骤和操作,而不会延迟。 但是,将文件上载到 Web 资源通常需要一些时间。 在这种情况下,为了模拟延迟并等待系统执行上载步骤,建议在 上载步骤之后立即 将 Delay 行添加到脚本中。
此外,若要确保正确执行上载,请设置上载步骤后的内容验证。 通常,如果文件上传后页面上出现对话框或上载确认,请添加 关键字 验证或可用 代码 片段以检查上载步骤是否带来了预期结果。
从外部 URL 录制文件上传
检查下面的文件上传设置步骤:
- 将最大 100 MB 的测试文件下载到可公开访问的 URL。
- 记录脚本,直到需要上传文件。
- 单击目标页面上的相应按钮以上载文件。
- 在 “上传文件 “窗口中,提供指向要上载的文件的外部链接。 该文件将从提供的 Dotcom 监视器云存储的外部链接下载。 下载后,文件名将列在”上传 文件”窗口中 。 选择文件复选框,然后单击”确定“。 因此 ,OpenFileDialogHandler 行将自动添加到脚本中。
- 在上载步骤后添加延迟。
- 将关键字或图像验证添加到脚本中。
- 如有必要,继续录制;并在准备就绪时停止录制过程。
查找下面的 EveryStep 脚本工具中记录的文件上传脚本的示例。 该脚本包含上载本地存储的文件和从外部 URL 上传文件的示例。 出于上传测试目的,您可以使用来自公开可用 URL 的以下示例文件:
- https://d149yd38g6ldk.cloudfront.net/LoremIpsum.docx
- https://d149yd38g6ldk.cloudfront.net/LoremIpsum.pdf
- https://d149yd38g6ldk.cloudfront.net/LoremIpsum.txt
// script_version=3.0; everystep_version=4.0.7706.9249; date=2/10/2021; Chrome=83.0.4103.61 Tabs.SetSize (1768, 419); DMBrowser tab0 = null; Step (1, "Download & Generate Test Files - https://fastest.fish/test-files"); tab0 = Tabs.NewTab (); tab0.GoTo ("https://fastest.fish/test-files"); tab0.Link ("//A[normalize-space()=\"5MB\"]", "//A[normalize-space(text())=\"5MB\"]", "//A[normalize-space()=\"10MB\"]/preceding-sibling::A[1]").Click (); //File Download to the system storage Step (2, "Download & Generate Test Files - http://ipv4.download.thinkbroadband.com/5MB.zip"); tab0.Downloading ("5MB.zip", "http://ipv4.download.thinkbroadband.com/5MB.zip"); tab0.Para ("//P[normalize-space()=\"These test files will be downloaded in full over your network connection from high speed servers. These files can be used to test your network download speed.\"]/preceding-sibling::P[1]", "//P[normalize-space(text())=\"These test files will be downloaded in full over your network connection from high speed servers. These files can be used to test your network download speed.\"]/preceding-sibling::P[1]", "/HTML/BODY/DIV/DIV/P[1]").Click (); //File Upload using the file from the system storage Step (3, "Gofile - https://gofile.io/uploadFiles"); tab0.GoTo ("https://gofile.io/uploadFiles"); OpenFileDialogHandler (OpenFileDialogButton.Ok, new string[1] {"5MB.zip"}); tab0.Button ("//BUTTON[normalize-space()=\"Click here\"]", "//BUTTON[normalize-space(text())=\"Click here\"]", "//BUTTON[@ID=\"dropZoneBtnSelect\"]").Click (); tab0.Button ("//BUTTON[normalize-space()=\"Upload\"]", "//BUTTON[normalize-space(text())=\"Upload\"]", "//BUTTON[@ID=\"uploadFiles-btnUpload\"]").Click (); Delay ("40sec".ToDuration ()); tab0.KeywordAssert ("successfully uploaded"); //File Upload from the external URL tab0.Link ("//P[normalize-space()=\"Upload Files\"]/..", "//LI[@ID=\"li-uploadFiles\"]//A", "//LI[@ID=\"li-api\"]/preceding-sibling::LI[1]//A").Click (); tab0.Download ("Q3UTw.htm", "https://dropmefiles.com/Q3UTw"); OpenFileDialogHandler (OpenFileDialogButton.Ok, new string[1] {"Q3UTR.htm"}); tab0.Button ("//BUTTON[normalize-space()=\"Click here\"]", "//BUTTON[normalize-space(text())=\"Click here\"]", "//BUTTON[@ID=\"dropZoneBtnSelect\"]").Click (); tab0.Button ("//BUTTON[normalize-space()=\"Upload\"]", "//BUTTON[normalize-space(text())=\"Upload\"]", "//BUTTON[@ID=\"uploadFiles-btnUpload\"]").Click (); Delay ("40sec".ToDuration ()); tab0.KeywordAssert ("successfully uploaded");