Пропустить ожидание на сайте таймера селена Python
Я использую Selenium в Python ide с помощью geckodriver.
У сайта, который я пытаюсь открыть, есть таймер 30 секунд, после которого через 30 секунд появляется кнопка, и я посылаю на нее щелчок.
Я спрашиваю следующее: могу ли я как-то игнорировать / пропустить / ускорить время ожидания?
Прямо сейчас я делаю следующее:
driver = webdriver.Firefox()
driver.get("SITE_URL")
sleep(30)
driver.find_element_by_id("proceed").click()
Что очень неэффективно, потому что каждый раз, когда я запускаю код для выполнения некоторых тестов, мне нужно ждать.
Заранее спасибо, Ави.
ОБНОВЛЕНИЕ: я не нашел способ преодолеть препятствие, но пока я не пытаюсь сосредоточиться на следующем достижимом прогрессе:
<video class="jw-video jw-reset" disableremoteplayback="" webkit-playsinline="" playsinline="" preload="metadata" src="//SITE.SITE.SITE/SITE/480/213925.mp4?token=jbavPPLqNqkQT1SEUt4crg&time=1525458550" style="object-fit: fill;"></video>
(название цензурированного сайта)
На каждой странице есть видео, все видео относятся к классу "jw-video, jw-reset". У меня возникли проблемы с использованием элемента поиска по классу, поэтому я использовал:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "video[class='jw-video jw-reset']")))
Это работает, но я не могу понять, как выбрать src элемента...
1 ответ
Согласно пробной версии кода вы можете удалить time.sleep(30)
и вызвать WebDriverWait для элемента, чтобы быть кликабельным следующим образом:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# lines of code
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.ID, "proceed"))).click()
Примечание. Настройте экземпляр WebDriverWait с максимальным ограничением времени в соответствии с вашим вариантом использования. expected_conditions
метод element_to_be_clickable()
вернет WebElement, как только элемент будет виден и включен, чтобы вы могли щелкнуть по нему.