I have never had to test an application that had frames.
When does it make sense to divide a window into frames?
How do I refer to (target) objects within a frame?
Software Quality Assurance & Testing Stack Exchange is a question and answer site for software quality control experts, automation engineers, and software testers. It only takes a minute to sign up.Sign up to join this community
The underlying functionality refers to the frame like it is the window, however, the browser itself does not, but segments based on that. So the view part of the window gets divided by the frames. Within each frame the elements work normally with Selenium like it's a window, but from the browser level the elements get abstracted into the frames and are not as easily identifiable.
As html5 and css3 handle all of the above without having to create extra constructs it obsoletes the frame/iframe idea...I personally hate frames as they disrupt the webpage in general.
Selenium drives off the html view of the browser. Since the frames fragment the view you have to get the focus into each frame and then select instead of going from the browser window level down like normal web pages. I usually do this by mousemove by a certain amount of pixels to get in the frame, so find a parent container for the frame and move focus there and then offset and then look again for the element. You will need to play around with the specific rendering and figure out what works best. If you want specific help there you need to post your html code.