Selenium: получение URL файла из WebElement (django, pytest)
Я пытаюсь протестировать веб-приложение django с помощью Selenium и pytest.
На моей тестовой странице есть следующая ссылка, отображаемая в таблице (наряду с другими ссылками того же формата):
<a href="/download_file/?file_path=serve/myid/results_XYZ.csv"><input type="button" value="Results (.csv)" /></a>
Я могу получить этот webelement, используя следующий код:
input_fields = self.driver.find_elements(By.CSS_SELECTOR, '\\input')
for elem in input_fields:
value = elem.get_attribute("value")
if value == "Results (.csv)":
csv_link = elem
# more elif clauses to get the various links
вызов .click()
на этом веб-элементе приводит к успешной загрузке файла, так что это работает.
Теперь мне также нужно извлечь фактическую ссылку на скачивание из этого элемента, чтобы получить имя файла.
Что я пробовал:
print(mylink.get_attribute("href")) # prints None
print(mylink.get_attribute('outerHTML')) # prints <input type="button" value="Results (.csv)">
print(mylink.get_attribute('innerHTML')) # prints nothing
print(mylink.get_attribute("ownerElement")) # prints None
Последнее меня удивляет, потому что следующее:
mydic = mylink.get_property('attributes')[0]
for key in mydic:
print(f"\t{key}:\t{mydic[key]}")
печатает, среди прочего, ownerElement: <selenium.webdriver.remote.webelement.WebElement (session="c470b6e33d0b2fbec3f1a0e7e26dec55", element="81bdc092-0b8b-4069-a1ec-8a685fda18a5")>
Так что я в замешательстве, почему я не могу получить этот ownerElement. А также, почему .get_attribute('innerHTML')
, который я видел рекламируемым везде, не дает мне ничего.
Но в основном мне нужно знать: Как мне получить файл-url из такой ссылки на скачивание?