At freeway speeds, (if the cooling system is "full"), rush air passing through the radiator is what is relied on to cool the engine, it does not even need the cooling fan under these conditions. Once the thermostat is open the water pump circulates coolant through the engine block, cylinder head and radiator.
If the engine over heats only in traffic or when the engine is idling, the thermostat must open, the cooling system fan thermo switch must turn on the relay and operate the cooling fan. I am sure your mechanic has tested the electrics involved in that operate the cooling fan and found them in working order. My labor guide says the labor to replace the fan is about an hour and the part costs about $390 from the dealer, (a little cheaper from aftermarket sources). There will be diagnostic time involved for work so far. If the vehicle overheats after this work I would check the thermostat operation and ensure the head gasket is not damaged.