Expect is not really suitable for binary data, so I wouldn't use it for protocol buffers messages.
I would recommend writing a small C++ (or any other language) program that takes a command to send and and an response to expect, like you suggested. You can use the protocol buffers text format to represent your data, so you do not have to write manual XML -> protobuf conversion for each message.