Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2020 17:34:34

TaliZorah
Зарегистрирован: 2020-07-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python Selenium. Не работает Keys

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time
def main():
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://site.ru/")
    btn_elem1 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/ul/li[2]")
    btn_elem1.click()
    btn_elem2 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/p[1]/label/input")
    btn_elem2.click()
    btn_elem2.send_keys("login")
    btn_elem3 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/p[2]/label/input")
    btn_elem3.click()
    btn_elem3.send_keys("pass")
    btn_elem4 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/a")
    btn_elem4.click()
    time.sleep(1)
    driver.get("https://site/1")
    btn_elem5 = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/fieldset/div[2]/img[1]")
    btn_elem5.click()
    action = ActionChains(driver)
    action.key_down(Keys.CONTROL).send_keys("f").key_up(Keys.CONTROL).perform()
    time.sleep(5)
if __name__ == "__main__":
    main()





Всё работает до определенного момента.
Браузер открывается, расширяется. Перехожу на нужный сайт. Перехожу на вкладу Войти, ввожу логин и пароль. Перехожу на другую страницу, на которую нет доступа, если не залогинен. Открываю там спойлер со спрятанным текстом.

После чего я хочу вызвать “Найти” через Ctrl+F, но почему то не работает, не происходит ничего. И вообще так понимаю сами клавиши не работают. Как будто не добавились, хотя вроде в начале кода прописано.

И если нужный текст находится, то сделать скриншот и перейти на https://site/2, если нет, то сразу перейти на site/2 и провести там поиск. Всего там порядка десятка тысяч страниц, вероятно адрес станицы надо как-то через переменную сделать? И что-то вроде через ++ как в PHP сделать, типо плюс один, чтобы прибавлялось каждый раз?

Или быть может как-то по другому можно это сделать? Поиск обычного текста по всей странице. И если есть, то скриншот и переход дальше, если нет, то сразу переход дальше. (Звёздочка вызывает скриншот)



sila = driver.find_element_by_xpath("/html")
if 'Селява' in sila.text:
action.send_keys("*")
action.key_down(Keys.CONTROL).send_keys("s").key_up(Keys.CONTROL).perform()
driver.get("https://site/+1id") (вот как это сделать?)
else:
driver.get("https://site/+1id") (вот как это сделать?)



Проблемы две осталось в общем-то. Это как найти текст и как заставить перейти на страницу следующего id.
Буду очень благодарен за любую помощь.

Отредактировано TaliZorah (Июль 14, 2020 20:17:37)

Офлайн

#2 Июль 14, 2020 20:15:39

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Python Selenium. Не работает Keys

.



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#3 Июль 14, 2020 20:18:33

TaliZorah
Зарегистрирован: 2020-07-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python Selenium. Не работает Keys

AD0DE412
.
сделал, я обычно так и делаю, но здесь почему-то данного бб кода не увидел, спасибо)
я обычно на радикал заливаю, а зачем, какое фото залить?

Офлайн

#4 Июль 14, 2020 21:20:45

TaliZorah
Зарегистрирован: 2020-07-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python Selenium. Не работает Keys

Помогли, я вроде в лучшую сторону изменил код, но по прежнему что-то не работает, но не могу понять что именно

 from selenium import webdriver
import time
for i in range(1, 12699):
    automation_func(f"https://site.ru/lookup/{i}")
def automation_func(url):
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://site.ru/")
    btn_elem1 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/ul/li[2]")
    btn_elem1.click()
    btn_elem2 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/p[1]/label/input")
    btn_elem2.click()
    btn_elem2.send_keys("login")
    btn_elem3 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/p[2]/label/input")
    btn_elem3.click()
    btn_elem3.send_keys("pass")
    btn_elem4 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/a")
    btn_elem4.click()
    time.sleep(1)
    driver.get("url")
    btn_elem5 = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/fieldset/div[2]/img[1]")
    btn_elem5.click()
if "small" in driver.page_source:
    screenshot = driver.save_screenshot("{i}.png")
    driver.get("url")
else:
    driver.get("url")
if __name__ == "__main__":
    main()

Офлайн

#5 Июль 14, 2020 22:59:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Python Selenium. Не работает Keys

TaliZorah
Помогли
ну ты заходи если в чо



Офлайн

#6 Июль 14, 2020 23:31:57

TaliZorah
Зарегистрирован: 2020-07-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Python Selenium. Не работает Keys

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time
def automation_func(url, i):
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("site.ru")
    btn_elem1 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/ul/li[2]")
    btn_elem1.click()
    btn_elem2 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/p[1]/label/input")
    btn_elem2.click()
    btn_elem2.send_keys("login")
    btn_elem3 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/p[2]/label/input")
    btn_elem3.click()
    btn_elem3.send_keys("pass")
    btn_elem4 = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/div/div[2]/div/a")
    btn_elem4.click()
    time.sleep(1)
    driver.get("url")
    btn_elem5 = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/fieldset/div[2]/img[1]")
    btn_elem5.click()
    time.sleep(5)
    if "small" in driver.page_source:
        screenshot = driver.save_screenshot("{i}.png")
def main():
    for i in range(1, 5):
        automation_func(f"https://site.ru/{i}", i)
if __name__ == "__main__":
    main()

почему-то встаёт на строчке, кто знает в чем проблема? driver.get(“url”)

Отредактировано TaliZorah (Июль 14, 2020 23:32:19)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version