#python #html #selenium
#python #HTML #selenium
Вопрос:
Предыстория:
У меня есть немного кода Python Selenium, который ожидает загрузки веб-сайта (у него задержка). Как только веб-сайт будет загружен, я хочу щелкнуть / загрузить ссылку из href.
Python Selenium:
browser = webdriver.Chrome('C:/full/path/to/chromedriver.exe')
browser.get(MAIN_WEBSITE pdf)
delay = 20 # seconds
try:
myElem = WebDriverWait(browser, delay).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='btn-group']")))
print("Page is ready!")
# Now the site is loaded - I can download the pdf - but I am stuck!
except TimeoutException:
print("Loading took too much time!")
HTML-КОД после его загрузки
<div class="btn-group">
<a type="button" class="btn btn-primary btn-user" onclick="AiD('182030801')" href="/download.pdf?id=182030801amp;amp;h=917901e6659ad5eb53970aecf687b53eamp;amp;u=cacheamp;amp;ext=pdf" target="_blank" style="border-top-left-radius: 3px;border-bottom-left-radius: 3px;">
[...]
</div>
Вопрос:
Я хочу, чтобы selenium «щелкнул и загрузил» PDF-файл, связанный со href
ссылкой. Как я могу это сделать?
Ссылки:
Что я пробовал — и все еще не могу заставить это работать:
browser = webdriver.Chrome('C:/full/path/to/chromedriver.exe')
browser.get(MAIN_WEBSITE pdf)
delay = 20 # seconds
try:
myElem = WebDriverWait(browser, delay).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='btn-group']")))
print("Page is ready!")
# Now the site is loaded - I can download the pdf - but I am stuck!
except TimeoutException:
print("Loading took too much time!")
browser.find_element(By.XPATH, "//div[@class='btn-group']/a").click()
Комментарии:
1. Для Xpath требуется /a и .click() в конце.
2. @arundeepchohan Я понял, что — изменил / обновил код — но все равно не работает : (
3. Возможно, потребуется просто использовать myElem.getAttribute(‘href’) вместо этого в сочетании с driver.current_url.
4. Просто driver.get(driver.current_url myElem.getAttribute(‘href’)) Затем нажмите на ссылку для скачивания после.
5. @arundeepchohan
print(myElem.getAttribute('href')) AttributeError: 'WebElement' object has no attribute 'getAttribute'
:/
Ответ №1:
Используя что-то вроде этого, чтобы получить ссылку на страницу pdf.
import urllib
try:
myElem = WebDriverWait(browser, delay).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='btn-group']/a")))
urllib.retrieve(driver.current_url myElem.get_attribute('href'))
except TimeoutException:
print("Loading took too much time!")
Комментарии:
1. Я не думаю, что urllib больше не имеет urlretrieve… он был удален , также я думаю, что будет лучше, если я
.click()
нажму кнопку….2. однако .click() имеет действие щелчка.
3. onclick=»AiD(‘182030801’)»
4. Я не могу протестировать, так что попробуйте.