Granting only SELECT permissions on specific views to a specific user
Yes.  What you have will do what you want.  I do question the need for UserA to have db_owner access even on database A though.  Do they have a need to be able to drop the database?  Run backups that could interrupt your backup chain?  Change recovery model (same problem)?

Generally even if a developer has complete control over a given database I would still limit them to db_datareader, db_datawriter, db_ddladmin and EXECUTE (database level).  With very few exceptions that's sufficient for a development environment.  Permissions of course get fewer the higher up the SDLC stack you go.