Как сделать умный time.sleep()?

Мне нужно, чтобы программа при загрузке новой вкладки или процесса выполняла sleep(), но этот метод неудобный, так как непонятно, сколько именно времени программа будет загружаться.

Есть ли замена данному методу и какая?


Ответы (1 шт):

Автор решения: Jack_oS

У Selenuim-a есть метод WebDriverWait.until(), по которому можно судить о "готовности" загрузки важной части станицы:

class element_has_css_class(object):
  """An expectation for checking that an element has a particular css class.

  locator - used to find the element
  returns the WebElement once it has the particular css class
  """
  def __init__(self, locator, css_class):
    self.locator = locator
    self.css_class = css_class

  def __call__(self, driver):
    element = driver.find_element(*self.locator)   # Finding the referenced element
    if self.css_class in element.get_attribute("class"):
        return element
    else:
        return False

# Wait until an element with id='myNewInput' has class 'myCSSClass'
wait = WebDriverWait(driver, 10)
element = wait.until(element_has_css_class((By.ID, 'myNewInput'), "myCSSClass"))
→ Ссылка