Итак, я был совершенно сбит с толку относительно того, как это сделать в Selenium, и нигде не мог найти ответ, поэтому я делюсь своим опытом.
Я пытался выбрать iframe, но безуспешно (или все равно не повторялось). HTML выглядел так:
<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>
Код Python (с использованием библиотеки selenium) пытался найти этот iframe, используя это:
@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")
Повторение завершается неудачно с каждой комбинацией команд Selenium, которую я смог найти. Случайный успех не может быть воспроизведен, так что, возможно, это было какое-то состояние гонки или что-то в этом роде? Никогда не находил правильный способ получить его в собственном селене.