Hello Peterson
What your developers said is correct the ID’s are dynamically generated in .Net when the page is rendered in the browser. You can never rely on them. You have to look for static properties.
From what you have said I tried to think of a simple example that can match the scenario.
Consider a drop down that has the list of continents of the world and when you select some continent a collection of buttons are displayed with text adjacent to the button that tells which country the button corresponds to and let us say when you click any button the details of the respective country are loaded in the following page. (see the screen shot attached for visualizing). One can only know which button to click and what to expect by reading the adjacent text.(I think thats what you meant by English comprehension) In such a scenario (Like Tony wrote in his post about predicting the outputs) you have to let your script know all the options available and what your script can expect - A simple Switch Case statement will do the job. To perform the click on the right button you ll have to let the script read the adjacent text and match with your exhaustive list of possibilities in you switch case statement.(Almost all such organizations will be in a table so you could browse the cells of the table and click on the button in the cell you need).
If the combinations are explosive for you to handle what you could do is adopt a intelligent mechanism. you have to override your click function with say - ClickIfRenderd - and this will attempt to click the button only if it is visible on the page else just does nothing and moves to the next line of code. Note that in this case you have write the script of all the buttons that are in the design doc of your application.
Thankyou