My first guess would have been the fans not spinning or the radiator core. But you said you checked or replaced these ... hmmmm ... well, the heat enters the coolant as a result of the gasoline firing in the cylinders, along w/the heat of the compresssion stroke,as well as from the auto-transmission if you have that, along with any add'l load on the engine such as something heavy or a faulty AirCon or other accessory on the drive belts, and the heat leaves the coolant as a result of the proper airflow through the radiator and the proper rationing of coolant between the engine and the radiator. So it has to be due to something with all that. There's either something wrong going on w/the engine, the transmission or its fluid, or there is something wrong with the radiator or thermostat.
Even w/a new radiator cap, it could still be the seal between the radiator cap and the nozzle where it goes isn't sealing tight. Before moving on to other tests, make absolutely certain this is working correctly. If the seal isn't tight, it overheats & leaks b/c it doesn't hold the specified pressure. Coolant boils at a lower temp at lower pressures. Sometimes the sealing surface becomes deformed by heat or more often by someone trying to unscrew it when it is stuck, and they use waterpump pliers or something, which can cause it to deform. Ask your mechanic to double-check the coolant pressurization.
Here's what I'd do next, beyond above, if it were my car, in this order:
Bring all the recommended engine servicing up to manufacturer's recommendations. If your car hasn't had a basic tune-up in a while, this is a good time for it. Change the oil. Replace the spark plugs and air filter. If you have an automatic transmission, change the fluid and filters if beyond the recommended interval.
Check the idle speed and ignition timing to make sure it is right on the manufacturer's spec.
Remove the thermostat, put it in a pot of hot water on the stove with a thermometer and visually verify it is opening at the specified temperature, and opening fully.