Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 1

Автоматический поиск элементов Selenium - Python 3

31.03.2019, 20:32. Показов 869. Ответов 0

Студворк — интернет-сервис помощи студентам
В Selenium проблема с поиском элементов, этот поиск занимает больше времени чем все остальное. Поэтому я написал скрипт по Авто поиску нужного элемента.
________________________________________ ________________________________________ ____________
Суть такова:

Задаем в функцию следующие:

1 - сайт на котором искать
2 - выбираем режим (0) - без интерфейса (1) - отображает браузер
3 - указываем имена поиска в виде списка ["1","login","3psi"]

В ответ мы получаем нужный метод для поиска id\name\class name и потом просто копируем ответ куда нужно
ну и какой текст находиться в нем (если он есть)
________________________________________ ________________________________________ ____________
без разницы что вы ему отправите, если этого элемента нет то придет в ответ и поиск продолжиться:





________________________________________ ________________________________________ ____________

Скачать:

https://yadi.sk/d/cH38ikmOR1PS_Q
________________________________________ ________________________________________ ____________






Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#__________________________________________________________________#
# pip3 install selenium
#
# Параметеры в функцию 
# (1) = сайт на котором искать
# (2) = режим (0)- без интерйеса (1)- отображает браузер
# (3) = имена элементов
#__________________________________________________________________#
 
 
 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import Firefox 
from selenium.webdriver.firefox.options import Options
 
 
 
 
#________________________ 1 ___________________________________#
 
def Поиск(сайт,вариант,элементы):
 
    def поиск_элемента(name):
 
        a = 0
        up   = '|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\T̲E̲X̲T̲/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|\n'
        down = '\n|___/‾‾\_________________________________/‾‾\___|'
 
        print('|‾‾ON‾‾‾‾‾‾‾‾‾‾‾‾ '+str(uio)+' ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|\n')
 
        ##################################
        if a == 0:
 
            try:
                bt =b.find_element_by_id(name)
                print('.find_element_by_id'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
 
        ##################################
        if a == 1:
 
            try:
                bt =b.find_element_by_name(name)
                print('.find_element_by_name'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
 
        ##################################
        if a == 2:
 
            try:
                bt =b.find_element_by_xpath(name)
                print('.find_element_by_xpath'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
        ##################################
        if a == 3:
 
            try:
                bt =b.find_element_by_link_text(name)
                print('.find_element_by_link_text'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
        ##################################
        if a == 4:
 
            try:
                bt =b.find_element_by_partial_link_text(name)
                print('.find_element_by_partial_link_text'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
        ##################################
        if a == 5:
 
            try:
                bt =b.find_element_by_tag_name(name)
                print('.find_element_by_tag_name'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
        ##################################
        if a == 6:
 
            try:
                bt =b.find_element_by_class_name(name)
                print('.find_element_by_class_name'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
        ##################################
 
        if a == 7:
 
            try:
                bt = b.find_element_by_css_selector(name)
                print('.find_element_by_css_selector'+ '("'+ name +'")')
                print(up + bt.text + down )
 
                a+=1
            except:
                a+=1
 
        else:
            print('Элеент не найден')
 
 
        print('\n|_________________________________________________________________END__|\n')
        ##################################
 
    if вариант == '0':
 
        opts = Options()
        opts.set_headless()
        assert opts.headless  
        b=webdriver.Firefox(options=opts)       
 
    if вариант == '1':
        b=webdriver.Firefox()
 
 
    b.get(сайт)
 
 
 
 
 
    uio= 0
    for xs in элементы:
        uio+=1
        поиск_элемента(xs)
 
 
 
    if вариант == '0':
        b.close()
 
#_________________________ 2 __________________________________#
 
lim = [
"post__title-text",
"logo-wrapper",
"email",
"Предисловие от автора статьи",
"ij_first_name",
"inline-list__item",
]
 
https= "https://habr.com/ru/post/248559/"
 
Поиск(https,"0",lim)
#____________________________________________________________#
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2019, 20:32
Ответы с готовыми решениями:

Поиск элементов на странице, Python selenium
Здравствуйте. Пишу скрипты для автоматизации действий пользователя и в большинстве функций ищу элементы по средством xpath. Знаю, что...

Поиск Selenium+Python
Здравствуйте, нужна помощь, есть задача, смысл такой - написать скрипт, который в 3х поисковиках(yandex, google, rambler) вводит...

Python + Selenium поиск эл-тов
https://stepik.org/lesson/138920/step/11?discussion=4198523&unit=196194 Помогите пожалуйста решить задание.... 2 дня бьюсь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2019, 20:32
Помогаю со студенческими работами здесь

Поиск элементов на странице. Selenium
Всем привет, у меня вопрос по поиску элемента на странице. Делаю что-то вроде скрипта, наверное, для покупки вещей на сайте, когда дохожу...

Автоматический просмотр видео Python+Selenium
Есть задача (для себя) написать бот для просмотра видео на Перископе. Алгоритм: 1. Вставляешь ссылку на трансляцию и даём значение...

Selenium и AngleSharp. Поиск элементов.
Добрый день всем. Кто имел дело с Selenium и/или с AngleSharp подскажите, как искать элементы правильно? IWebElement element =...

Python+selenium
Пытаюсь сделать как в документации. Есть такая конструкция: <div parentid="div_zvRmisipFbM" alignmargin="0,0,0,0"...

python selenium
Есть html структура: <div> <span>name<span/> text // <span>%<span/> <br/> <span>name<span/> text ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Основы OpenGL 3.3 и Qt 6.9. Трансформированный треугольник
8Observer8 27.06.2025
На русском https:/ / rutube. ru/ video/ e424497dd6b7ae7e11494027c4b31a54/ https:/ / vkvideo. ru/ video-231040171_456239019 https:/ / www. youtube. com/ watch?v=mfD-ZL7wa_4 Bastyon
Федерация аутентификации на основе JWT-токенов с Keycloak и .NET в гетерогенных инфраструктурах
ArchitectMsa 27.06.2025
Тот самый момент, когда впервые столкнулся с проблемой интеграции десятка разрозненных систем аутентификации в одной корпоративной экосистеме. Кажый сервис жил своей жизнью - тут Basic Auth, там. . .
Гайд по современным СУБД (небесспорный)
Codd 26.06.2025
Когда я только начинал свой путь в IT как рядовой программист, база данных казалась мне чем-то простым и понятным. Ну, серьезно — это же просто место, где лежат данные, верно? Напиши SELECT * FROM. . .
Использование C# с AWS S3: Примеры с AWS SDK для .NET
stackOverflow 26.06.2025
Amazon S3 (Simple Storage Service) уже давно стал стандартом де-факто в мире облачного хранения данных. Особенно приятно, что для разработчиков . NET предусмотрен отличный SDK, который значительно. . .
Веб-автоматизация с Python и Selenium
AI_Generated 25.06.2025
Selenium с Python — это комбинация, которая выдержала проверку временем. Несмотря на появление новых инструментов вроде Playwright или Puppeteer, связка Python-Selenium остаётся золотым стандартом. . .
CQRS и Event Sourcing на C#
ArchitectMsa 25.06.2025
За последние несколько лет сложность корпоративных приложений выросла в геометрической прогрессии. Простые монолитные системы уступили место распределенным микросервисам, а нагрузка на корпоративные. . .
Хак домофона или как открыть дверь по номеру
yariko 25.06.2025
Забыли дома ключ. Не проблема. Можно открыть дверь домофона, просто позвонив на свой номер квартиры. Идея состоит в следующем. Внутрь трубки абонента встраивается контроллер, который по звонку сам. . .
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »