I manage an auto repair shop. In the past, if I told a customer that a certain part would fix his car and it didn't, I have not charged them.
But there are different circumstances, so I'll just share with you what I think is fair.
Situation #1) Customer has a complaint about a certain problem. We find a part that we know is bad. We are 100% sure the part is bad, but we are not sure that this bad part is causing the symptom described. It could cause it. We're just not sure. I will tell the customer this. If that does'n solve the problem, I think it's fair for the customer to pay for the part. After all, it was bad, and it might have fixed the problem. He does have a new part now to replace the faulty one.
Situation #2) Customer tell us hi symptoms. We narrow it down to 2 parts. I give the customer the choice. Change both and be sure or change the cheaper one and keep your fingers crossed. Once again, if that doesn't do it, the customer should still pay for the part, even though the part replaced probably wasn't bad. He also has the choice of bringing it somewhere else, but they will probably come up with the same choices.
Situation #3) Customer tells me his symptoms. We tell him you need this. That will fix your problem. We replace part and nothing changes. I won't charge him for that part, and if I can't find the correct part, I won't charge him for the diagnosis.
Some problems are hard to diagnose. Especially if the car doesn't act up at all times. I realize you don't want to pay for parts you don't need, but it is your car, and if they change something, you are getting some benefit from the new part.
My advice would be as polite as you can with them and sympathize with the difficulty of their job. They are much more likely to cut you a break if you are working with them and not fighting them each step of the way.