Привязки Python в Selenium 2 имеют новый класс поддержки с именем Ожидаемый_кондиционирование для выполнения всех видов операций, таких как проверка, видим ли элемент. Это доступно здесь.
ПРИМЕЧАНИЕ. указанный выше файл находится в стволе по состоянию на 12 октября 2012 г., но еще не загружен в последнюю версию, которая по-прежнему составляет 2,25. В настоящее время, пока не будет выпущена новая версия Selenium, вы можете просто пока сохранить этот файл локально и включить его в свой импорт, как я сделал ниже.
Чтобы сделать жизнь немного проще, вы можете объединить некоторые из этих ожидаемых методов условий с логикой Selenium wait until
, чтобы сделать некоторые очень удобные функции, аналогичные тем, что были доступны в Selenium 1. Например, я положил это в свою базу класс под названием SeleniumTest, который расширяют все мои тестовые классы Selenium:
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
import selenium.webdriver.support.expected_conditions as EC
import selenium.webdriver.support.ui as ui
@classmethod
def setUpClass(cls):
cls.selenium = WebDriver()
super(SeleniumTest, cls).setUpClass()
@classmethod
def tearDownClass(cls):
cls.selenium.quit()
super(SeleniumTest, cls).tearDownClass()
# return True if element is visible within 2 seconds, otherwise False
def is_visible(self, locator, timeout=2):
try:
ui.WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.CSS_SELECTOR, locator)))
return True
except TimeoutException:
return False
# return True if element is not visible within 2 seconds, otherwise False
def is_not_visible(self, locator, timeout=2):
try:
ui.WebDriverWait(driver, timeout).until_not(EC.visibility_of_element_located((By.CSS_SELECTOR, locator)))
return True
except TimeoutException:
return False
Затем вы можете легко использовать их в своих тестах следующим образом:
def test_search_no_city_entered_then_city_selected(self):
sel = self.selenium
sel.get('%s%s' % (self.live_server_url, '/'))
self.is_not_visible('#search-error')