If you know of a reliable range/pattern that it can display as, you can absolutely do a Dynamic option. Once the element is set to dynamic, the value for it in the Application Modeler should be greyed out and will be considered NULL. On your read/write stage, after you've added it to the list of steps, there should be a little button on that same row with three dots. In here, you can feed it the path you want to check.
We ran into a similar issue on the newer web version of BMC Remedy, where a random seed was generated at login and would define the div offsets for the page we needed. I wound up having a divNumber data item, then checked if the element I was looking for existed via a quick wait stage. If it did not, I'd bump up the div number by one and try again, up through a specific predefined range. If it still couldn't find it, it'd throw an exception.
So it should look something like this (where frameElement is whatever you've called the spied item in Application Modeler):
Number - divNumber - 1
Text - divPath - ""HTML/DIV(2)/FRAME(""&[divNumber]&"")""
Wait - frameElement - Value, divPath - checkExists, True
False - Calculation - divNumber = divNumber+1
Wait stage
Rinse, repeat
If not found, exception
True - Move on