Возможно, двумя основными способами - на уровне HTTP или полная имитация браузера - Selenium, Phantom.js, headless-браузеры.
А если кнопка вызывает какую либо функцию и не перезагружает страницу. Или это вообще Single page application. Например сайт магазина одежды
В браузере все взаимодействие с сервером в конечном итоге основано на XMLHttpRequest, гораздо реже WebSocket или такие протоколы, как RTMP (во Flash), на более низком уровне любое сетевое взаимодействие основано на TCP или гораздо реже UDP и другие протоколы для особых случаев, в общем среда является недоверенной, все что отправляется на сервер или поступает с него можно перехватить при анализе и после этого симитировать своим приложением, есть несколько уровней и способов, которыми это можно сделать.