A tester spent an afternoon on a payment form. The card field was visibly on the screen. Every selector she tried returned nothing. She checked the spelling twenty times.
The field was inside an iframe, and that is one of the most confusing failures in Selenium precisely because everything looks correct.
An iframe is a whole separate document embedded in the page. It has its own DOM. When you search for an element, Selenium searches the document it is currently focused on, and by default that is the main page. Elements inside a frame are invisible to that search, even though they are visible to you.