Unfortunately, but you just aren't doing scrum. You are doing waterfall in sprints; aka scrum-fall.
1) Integrate QA into the team. They shouldn't be a separate group that you "pass" the code to. They should be working with the devs every day to test their work.
2) Make your stories much, much, much smaller. A story should take 1-2 days to complete (a week is absolute max and only occasionally unless you're building rockets). You need the team to work on getting better at slicing functionality vertically to create small testable, usable, value added stories.
3) Scrum doesn't have job titles. If a dev is done doing all coding then he/she tests someone else's code. Or works to create automated scripts that you say you are missing.
4) Its OK to have a "hardening" sprint right before a major release, but certainly testing HAS TO BE done during the same sprint as development. Pretty much every time code is checked in, testing gets done.
5) Fix your definition of "done". Done means the code is written, tested, deployable, and documented as needed.
6) You need a lot of work on "team" and commitment. Your comment that devs are "happy" as long as their coding is done is quite contrary to scrum and its principals.
Based on your comments I think the team needs to invest in training if you are serious about becoming agile.