They (randomly?) change IDs and the DOM structure, and thus break scripts. One workaround is to automate visually (KantuX, Sikuli,...) but that is much slower and makes only sense for low-volume scraping.
They randomize the tag ids and classes a lot of the time. At least that has been my experience with the Facebook messenger website.
If you're doing messenger, there's a community api that emulates the browser on github