Find a specific file when the folder get created during run time.
Please need help, I am testing this web application that creates a dynamic folder every time an image is displayed within the software, Here are my test steps.
1) select the customer.
2) select the image to display in the IMAGE view screen.
(note: I can get the image number (i.e 001) within this window)
3) The software creates a folder (i.e 001) using the number assigned for that image in the following path C:\Storage\cache\. (example: C:\Storage\cache\001)
4) Within the cache folder, it will create a file called "imagesnap.jpg"
3) My test result is to make sure the "imagesnap.jpg file exists in the dynamic folder that got created when the image got displayed within the software being tested.
4) The imagesnap.jpg file must exist in every cache folder that is created when an image is displayed in the window.
Before I was using the script below to find the file but now I need to check the cache folder gets created on run time and the file imagesnap.jpg exist in the created cache folder.
Can the script be modified to do this?
- If someone can give an example of how to store the image name (i.e 001) taken from the window display screen and use it in the script.
- Then, compare the stored image name (i.e 001) to the cache folder (i.e ...\001) created in the C:\Storage folder.
- Next, verify the imagesnap.jpg file exist in the cache folder for that image name (i.e C:\Storage folder\001\imagesnap.jpg) and log message "File imagesnap.jpg file exist in cache folder " 001 "
- if not, get a log message "File does not exist". Help is really appreciated.
function FileJPGFinder()
{
var foundFiles, aFile;
foundFiles = aqFileSystem.FindFiles("C:\\Storage\\", "imagesnap.jpg");
if (foundFiles != null)
while (foundFiles.HasNext())
{
aFile = foundFiles.Next();
Log.Message(aFile.Name);
}
else
Log.Message("No JPG files were found.");
store the image number in a variable
if image number is not a string, you may need to convert it using aqConvert
https://support.smartbear.com/testcomplete/docs/reference/program-objects/aqconvert/inttostr.html
MyImageNumber = (value found in window)
now create the folder name
MyFolderName = "C:\Storage\cache\" + MyImageNumber
now use that name in your file search
aqFileSystem.FindFiles(MyFolderName, "imagesnap.jpg")
first you look for the period in the file name
var MyPeriodLocation= aqString.Find(MyImageNumber,".",0)
now you get the first part of the file name, up to the period
var NoMoreJPG= aqString.Substring(MyImageNumber,0,MyPeriodLocation)
so your folder name is
MyFolderName = "C:\Storage\cache\" + NoMoreJPG
Here's a good reference for operations that you can do with strings. When you get more experience with it, you can combine some of the steps but it's good to do them one step at a time if you aren't sure of the answers. Sometimes I will also add a log message after each step to print out the answer and make sure it's doing what I meant it to do.
https://support.smartbear.com/testcomplete/docs/reference/program-objects/aqstring/methods.html
Great, I was able to get the filename without the file extension. Kudos to you !!!!
Thank you very much.
Hi,
> MyFolderName = "C:/Storage/octCache/" + NoMoreJPG;
Try
var MyFolderName = "C:\\Storage\\octCache\\" + NoMoreJPG;
Does it help?
P.S. BTW, your initial code works fine for me using JScript. Is your code on JScript or JavaScript?
Hi,
> I need to verify imagesnap.jpg exist within the folder MyFolderName.
Use aqFile.Exists() method.
Hi,
> The folder name will be different on every run so the pathname cannot be hardcoded.
Make it dynamic. Something like this:
var MyFolderName = "C:\\Storage\\octCache\\" + NoMoreJPG + "\\";
var FileFullPath = MyFolderName + "imagesnap.jpg";
if (aqFile.Exists(FileFullPath))
...
Thank you !!