Abstraction is the gathering of the general characteristics we need and the filtering out of the details and characteristics that we do not need.
Sounds fancy, but it’s actually a simple concept. Let’s think about a recipe website. I have some chicken in my fridge and some peppers that I want to use up. The search doesn’t care how much I have of each, it just wants to know what ingredients I have. The specific quantities have been abstracted away from the search because it’s not important; it’s too specific. Instead, they are displayed on the page for the recipe. So the search knows it contains chicken and peppers, but not the exact amounts, which is all it needs to know to be functional.
If you are familiar with designing automated checks, the same applies there. The focus of the check is to populate a login form. The check doesn’t care how this is done, it just wants it done. So instead of including all the logic to populate the form in the check, we abstract it away into a separate class. Now check knows it can do it, but not the specifics of how it works.