В SO много сообщений о том, как работать с селектором файлов в Selenium, но все они, кажется, думают, что у вас есть ссылка на элемент, представляющий диалог выбора файлов, часто потому, что вы знаете идентификатор элемента. Как вы это нашли? Мой обычный метод, использующий «Inspect Element», не работает, потому что нет способа включить Inspect Element при включенном диалоге выбора файлов.
Страница, о которой идет речь, - images.bing.com. Выбор файла появляется, когда вы нажимаете на камеру («Поиск с использованием изображения»), а затем нажимаете кнопку Обзор.
Вот что я пробовал. Я написал эту функцию, чтобы получить список всех видимых элементов, чтобы я мог посмотреть, какие элементы видны после того, как я нажму на ссылку, чтобы открыть средство выбора файлов, но не раньше. Этот процесс идентифицирует три таких элемента, но ни один из них не имеет идентификатора, когда я запускаю elem.get_attribute("id")
или elem.get_property("id")
.
def get_visible_elements(self):
result = set()
for elem in self.driver.find_elements_by_css_selector("*"):
try:
if elem.is_displayed():
result.add(elem)
except StaleElementReferenceException:
pass
return result