availability_of_element_located ()
presence_of_element_located()
- это ожидание для проверки наличия элемента в DOM страницы. Это не обязательно означает, что элемент виден. Следовательно, ожидание появления самого первого сопоставленного WebElement .
Generi c варианты использования
Как правило, в ваших тестах простое ожидание наличия элемента может не соответствовать вашим требованиям, и вам может потребоваться дождаться, пока элемент будет видимый или интерактивный .
Чтобы дождаться, пока элемент станет видимым, вам нужно вызвать WebDriverWait для visibility_of_element_located () и ваш эффективный блок кода будет:
return WebDriverWait(self.__driver, 10).until(
ec.visibility_of_element_located((By.XPATH, locator))
)
Чтобы дождаться, пока элемент станет доступным для взаимодействия, вам нужно вызвать WebDriverWait для element_to_be_clickable () и вашего эффективный блок кода будет:
return WebDriverWait(self.__driver, 10).until(
ec.element_to_be_clickable((By.XPATH, locator))
)
Примечание : необходимо добавить следующие импорты:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
Этот вариант использования
В этом варианте использования строка:
ec.presence_of_element_located((By.XPATH, locator))
не смогла идентифицировать желаемый элемент в течение желаемого периода времени, поэтому вы столкнулись с TimeoutException .
Однако из TimeoutException будет сложно определить фактический результат сбоя.
Решение
В качестве решения, чтобы узнать точную причину сбоя, вам необходимо удалить WebDriverWait и заменить строку кода на:
find_element_by_class_name(name)
find_element_by_css_selector(css_selector)
find_element_by_id(id)
find_element_by_link_text(link_text)
find_element_by_name(name)
find_element_by_partial_link_text(partial_link_text)
find_element_by_tag_name(tag_name)
find_element_by_xpath(xpath)
При необходимости вы можете замедлить поиск, вызывая ожидание через time.sleep(secs)
во время отладки .
Ссылки
Вы можете найти пару соответствующих обсуждений в: