Разница между find_elements_by_ <attribute>и WebDriverWait (self.driver, 20) .until (E C .presence_of_element_located (locator) - PullRequest
0 голосов
/ 25 апреля 2020

Я недавно начал работать над селеном- python. Оба из них дают тот же результат. Я хочу знать, есть ли разница

time.sleep(10)
element = self.driver.find_element_by_xpath(<some-xpath>).get_attribute('textContent')

и

element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, <some-xpath>))).get_attribute('textContent')

1 Ответ

2 голосов
/ 25 апреля 2020

С вашим первым кодом

time.sleep(10)
element = self.driver.find_element_by_xpath(<some-xpath>).get_attribute('textContent')

ваш скрипт будет ждать 10 секунд, а затем вернет элемент, соответствующий xpath. Тем не менее, когда вы используете второй код

element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH, <some-xpath>))).get_attribute('textContent')

, элемент будет возвращаться по мере доступности. Скрипт будет проверять элемент не более 10 секунд.

Поэтому всегда лучше использовать ExplicitWait , как показано во второй части кода.

Учтите, что элемент отображается в течение 3 секунд, затем вы тратите 7 секунд при первом подходе, но при втором подходе сценарий переходит к следующему шагу сразу после того, как элемент присутствует на 3-й секунде (сохранение 7 секунд времени выполнения для одного элемента, подумайте об этом в большем масштабе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...