селен подождать х секунд и если прошло х секунд, перезагрузить браузер Python - PullRequest
0 голосов
/ 03 октября 2019
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.someurl.com/")
wait = WebDriverWait(driver, 60)

def search_automation(keyword):
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".input_keyword").send_keys(keyword)

keyword_list = ['a','b','c']
for i in keyword_list:
    search_automation(i)

В случае кода выше, если страница не загружается должным образом в течение 60 секунд, она просто переходит к следующему ключевому слову.

В реальном случае, над которым я работаю, естьболее 10 тыс. данных для работы, и я не должен пропустить ни одного из них.

Итак, я хочу добавить условие if, else в код, который является временем ожидания. Есть ли способ, которым я могу поставить условия на время ожидания?

Например,

  1. ждать 60 секунд максимум, чтобы найти элемент.
  2. если, наконец, 60прошло секунд, driver.close () и перезагрузите драйвер.

1 Ответ

1 голос
/ 03 октября 2019

Здесь вы можете использовать WebDriverWait в блоке try / except.

from selenium.common.exceptions import TimeoutException

def wait_for_element(by):
    try:
        # wait up to 60 seconds for the element
        WebDriverWait(driver, 60).until(EC.presence_of_element_located(by))

        # if we hit exception, element was not found, and we should reload
    except TimeoutException():
        driver.refresh()

Просто передайте селектор, такой как (By.CSS_SELECTOR, ".input_keyword"), в метод. Он будет ждать до 60 секунд, пока элемент будет существовать, и если он не существует, он обновит страницу.

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