Button.click() freezes (no timeout)
The element is most likely not being found and the script is continuously looking for the element. There are a few different types of time outs you can set: Implicit and Explicit
Explicitly waiting will wait for an "Expected Condition". You can read more on this at SeleniumHQ.
You can also set an Implicit wait which will wait a given amount of time before throwing an exception, again you can read more at SeleniumHQ.