Форум сайта python.su
Доброго времени!
Пытаюсь сделать небольшую программку. Суть - На сайте есть элемент ,который я ищу через xpatch. Но чтобы он был виден Selenim- у , нужно сделать “скролл” и не один….. Очень хотелось бы реализовать это через whill но никак не получается……
Прошу сильно не лупить за код…, начал изучать python совсем недавно
Первая часть кода ищет нужный элемент по “xpatch” и когда находит - то кликает по нему.
Вторая часть (где else) делает “скролл” если найдет “ html” в CSS_SELECTOR-ре (а он есть всегда на сайте). Должно получится так - что все это будет “скроллится” пока не найдет элемент по “xpatch”.
while True: if driver.find_element(By.XPATH, "/html/body/table/tbody/tr[3]/td[2]/center/form/button"): time.sleep(3) knopra_vupolnenia = driver.find_element(By.XPATH, "/html/body/table/tbody/tr[3]/td[2]/center/form/button") time.sleep(3) knopra_vupolnenia.click() else: knopra_vupolnenia = driver.find_element(By.CSS_SELECTOR, "html") time.sleep(2) knopra_vupolnenia.send_keys(Keys.DOWN)
from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.by import By import time from selenium.webdriver.common.keys import Keys options = Options() options.add_argument('-profile') options.add_argument(r'C:\Users\werty\AppData\Roaming\Mozilla\Firefox\Profiles\6w07oelt.proffffffff') options.set_preference("general.useragent.override", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0") driver = webdriver.Firefox(options=options) from selenium.webdriver.common.keys import Keys driver.get("https:......ru") driver.set_page_load_timeout(20) while True: if driver.find_element(By.XPATH, "/html/body/table/tbody/tr[3]/td[2]/center/form/button"): time.sleep(3) knopra_vupolnenia = driver.find_element(By.XPATH, "/html/body/table/tbody/tr[3]/td[2]/center/form/button") time.sleep(3) knopra_vupolnenia.click() else: knopra_vupolnenia = driver.find_element(By.CSS_SELECTOR, "html") time.sleep(2) knopra_vupolnenia.send_keys(Keys.DOWN)
Отредактировано 2wer89 (Окт. 14, 2022 02:42:15)
Офлайн
У селениума, если функция поиска элемента ниче не нашла, то поднимает исключение.
Для вещей вррде постоянной проверки чего то используй этот метод:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.common.exceptions import TimeoutException while 1: try: element = WebDriverWait(driver, 0.3).until(EC.presence_of_element_located(By.XPATH, xpath)) except TimeoutException: #скрол вниз continue
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн