如果需要为具有文件上传功能的 Web 应用程序设置监视或加载测试,请使用 EveryStep 脚本工具桌面 来记录脚本。

文件上传录制仅适用于 Chrome 和移动浏览器。

使用 EveryStep 桌面,您可以在脚本中设置从外部 URL 上传的文件,最多 5MB 和最多 20MB。 例如,您可以记录 4 个 5 MB 文件或 20 个 1 MB 文件的上载。

工作原理

Dotcom 监视器没有本地可用存储。 若要模拟文件的上载过程,系统需要先从公共 URL 将文件下载到脚本,然后再执行上载步骤。 因此,首先,您需要提供一个测试文件,该文件将由 Dotcom 监视器在上传过程中使用。 因此,Dotcom-Monitor 将从提供的 URL 下载文件到系统云存储,并在每次执行脚本时在上载过程中使用它。 有两种方法可以向 Dotcom 监视器提供测试文件。

从外部 URL 下载文件

若要记录从外部 URL 上传的文件,请将高达 5 MB 的测试文件放入可公开访问的 URL(如 Amazon S3 存储桶、Azure 存储或 CDN 服务)。 然后,将文件上传步骤记录到”每步记录器”中。 录制步骤时,系统会提示您提供指向测试文件的链接。 系统将下载该文件,并在上载操作中使用它。

在脚本中录制文件下载

或者,在 EveryStep 桌面记录器中,您可以 记录文件下载 并选择下载的文件来记录脚本中的上载步骤。 如有必要,可以通过在录制后编辑脚本代码区域中的相关行来更改文件名和链接以及下载超时。

最佳实践

默认情况下,Dotcom 监视器执行脚本中的所有步骤和操作,而不会延迟。 但是,将文件上载到 Web 资源通常需要一些时间。 在这种情况下,为了模拟延迟并等待系统执行上载步骤,建议在 上载步骤之后立即 将 Delay 行添加到脚本中。

此外,若要确保正确执行上载,请设置上载步骤后的内容验证。 通常,如果文件上传后页面上出现对话框或上载确认,请添加 关键字 验证或可用 代码 片段以检查上载步骤是否带来了预期结果。

从外部 URL 录制文件上传

检查下面的文件上传设置步骤:

  1. 将高达 5 MB 的测试文件下载到可公开访问的 URL。
  2. 记录脚本,直到需要上传文件。
  3. 单击目标页面上的相应按钮以上载文件。
  4. “上传文件 “窗口中,提供指向要上载的文件的外部链接。 该文件将从提供的 Dotcom 监视器云存储的外部链接下载。 下载后,文件名将列在”上传 文件”窗口中 。 选择文件复选框,然后单击”确定“。 因此 ,OpenFileDialogHandler 行将自动添加到脚本中。

    如果 文件下载 已记录在脚本的上一步,请在”上传文件”窗口中立即 选择文件 名。

  5. 上载步骤后添加延迟。
  6. 将关键字或图像验证添加到脚本中。
  7. 如有必要,继续录制;并在准备就绪时停止录制过程。

查找下面的 EveryStep 脚本工具中记录的文件上传脚本的示例。 该脚本包含测试文件下载到系统存储的步骤。

// 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");