browser.get(start_url)
def crawler():
links = browser.find_elements_by_xpath('//pre/a')
for link in links:
if '.xml' in link.text or '.pdf' in link.text:
print(f'download {link.text}') # This is a placeholder for now
else:
print('click')
browser.get(browser.current_url + link.text)
crawler()
В комментариях приведен код, который я использую для ожидания обновления в Selenium.Обратите внимание, что он написан как часть класса, поэтому он использует self.driver и т. Д. BTW self.get_tags - это просто функция, которая делает find_elements_by_tag_name для предоставленного тега (используя 'html', который есть на большинстве страниц).
from contextlib import contextmanager
from selenium.webdriver.support.expected_conditions import staleness_of
@contextmanager
def wait_for_page_load(self, timeout=MAX_WAIT, entity='wait_for_page_load'):
""" Wait for a new page that isn't the old page
"""
old_page = self.get_tags(self.driver, 'html', entity)
yield
webdriver.support.ui.WebDriverWait(self.driver, timeout).until(
staleness_of(old_page[0]))
пример вызова:
with self.wait_for_page_load():
logout.click()