Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 14, 2022 02:12:05

2wer89
Зарегистрирован: 2022-10-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Делать Scroll пока не найдет элемент на сайте.

Доброго времени!
Пытаюсь сделать небольшую программку. Суть - На сайте есть элемент ,который я ищу через 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)


Но показывает ошибку связанную как то с xpatch,….xpatch не найдет ….а дальше до elso код не доходит….
Скажите что я не так делаю.
Очень Буду очень признателен за любые подсказки и советы!



————————————————————
весь код если что…

 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)

Офлайн

#2 Ноя. 29, 2022 13:51:38

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 323
Репутация: +  13  -
Профиль   Отправить e-mail  

Делать Scroll пока не найдет элемент на сайте.

У селениума, если функция поиска элемента ниче не нашла, то поднимает исключение.
Для вещей вррде постоянной проверки чего то используй этот метод:

 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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version