




I'm going to sound like a broken record here, but instead of throwing parts at it, buy yourself a Consult cable to help diagnose the issue. You'll be able to read and reset codes, and more importantly read the live data from the engine sensors including the o2 sensors.
C
You could even get a app for $5 bucks on your phone that hooks up via a bluetooth obd2 connector ($20) that provides live data like that if you want to go cheap
wow i need to get out of the stone age and get me a smart phone. Thats 1 sweet app