So, I was absolutely baffled as to how to do this in Selenium, and couldn't find the answer anywhere, so I'm sharing my experience.
I was trying to select an iframe and having no luck (or not repeatably anyway). The HTML is:
<iframe?id="upload_file_frame"?width="100%"?height="465px"?frameborder="0"?framemargin="0"?name="upload_file_frame"?src="/blah/import/">
<html>
<body>
<div?class="import_devices">
<div?class="import_type">
<a?class="secondary_button"?href="/blah/blah/?source=blah">
<div?class="import_choice_image">
<img?alt="blah"?src="/public/images/blah/import/blah.png">
</div>
<div?class="import_choice_text">Blah Blah</div>
</a>
</div>
</div>
</body>
</html>
The Python code (using the selenium library) was trying to find this iframe using this:
@timed(650)
def test_pedometer(self):
sel = self.selenium
...
time.sleep(10)
for i in range(5):
try:
if sel.select_frame("css=#upload_file_frame"): break
except: pass
time.sleep(10)
else: self.fail("Cannot find upload_file_frame, the iframe for the device upload image buttons")
Repeated fails with every combination of Selenium commands I could find.
The occasional success would not be reproducible, so perhaps it was some sort of race condition or something? Never did find the right way to get it in selenium proper.
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…