У меня есть объект страницы, который взаимодействует с несколькими элементами на DOM. Если я создаю объект WebDriverWait
для инициализации объекта страницы в качестве члена экземпляра, могу ли я использовать его для всех ожиданий?Можно ли повторно использовать объект WebDriverWait?
Или, если я хочу подождать два отдельных элемента, лучше иметь два WebDriverWait
s?
Я испытываю некоторые странные TimeoutException
, и мне интересно, может быть. Как:
class MyPage(object):
def __init__(self, driver):
self.driver = driver
self.wait = WebDriverWait(driver, 10)
def get_search_box(self):
return self.wait.until(EC.presence_of_element_located('srch'))
def get_search_btn(self):
return self.wait.until(EC.presence_of_element_located('btn'))
против:
def get_search_btn(self):
wait = WebDriverWait(self.driver, 10)
return wait.until(EC.presence_of_element_located('btn'))
Да. Я могу использовать функцию для создания объекта Wait для меня, но хотел бы знать, имеет ли он побочный эффект, если я этого не делаю. – norbertpy
Существует разница в использовании неявных и явных ожиданий в селене. Использование неявного ожидания рекомендуется, если вы хотите полностью загрузить приложение, опросив DOM в течение определенного времени, и как только элемент будет найден, webdriver переходит к следующему шагу. Прочитайте документацию здесь, чтобы ждать дополнительной информации - 'http: // docs.seleniumhq.org/docs/04_webdriver_advanced.jsp' – Amit
Я не читал ур обновленный вопрос. Ваш первый пример отлично выглядит там, где вы повторно используете один и тот же экземпляр. Нет необходимости создавать новые экземпляры каждый раз. – Amit