Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2017 16:55:20

rastarokot
Зарегистрирован: 2017-02-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

Мне нужно автоматизировать работу на одном форуме, в частности, ставить чекбоксы напротив ников участников, а потом в новой вкадке составлять список “помеченных”.
Как я понял, для этой цели прекрасно подходит Selenium, с помощью которого можно автоматически открывать вкладки с нужными адресами, нажимать на кнопочки с соответствующими id и так далее.
Проблема, однако, в том, что при этом драйвер селениума открывает новое окно хрома, даже если старое было уже открыто - и сделать с этим ничего нельзя. Поэтому я хочу сначала записать куда-то url уже открытой вкладки с форумом, а уже потом этот url пускай себе открывается в новом окне.

И это возвращает меня к вопросу - как получить url из текущей открытой вкладке в хроме? Я пытался получить доступ к окну хрома через функцию FindWindow и доступ к его адресной строке через FindWindowEx, но эта затея у меня почему-то не увенчалась успехом - то ли я неправильно указывал класс и имя окон, то ли еще что-то.

Как же это можно сделать?

Офлайн

#2 Фев. 26, 2017 02:24:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

rastarokot
Как я понял, для этой цели прекрасно подходит Selenium
Хочу пройтись по улице, чтобы баб поснимать. Как я понял, для этой цели хорошо подходят красные калоши. Скажите, а чо бабам говорить, пока бежишь за ними? А то калоши шаркают и ничего не слышно, а звук их пугает.

rastarokot
Мне нужно автоматизировать работу на одном форуме, в частности, ставить чекбоксы напротив ников участников, а потом в новой вкадке составлять список “помеченных”.
Автоматизировать работу на форуме - понятно. В новой вкладке составлять список помеченных - непонятно. Обычно анализируются запросы, отправляемые браузером при нажатии на кнопку “отправить”, и потом они просто воспроизводятся без всякого браузера.



Отредактировано py.user.next (Фев. 26, 2017 02:28:19)

Офлайн

#3 Фев. 26, 2017 02:58:18

wi34rd
Зарегистрирован: 2016-10-08
Сообщения: 89
Репутация: +  2  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

py.user.next
Обычно анализируются запросы, отправляемые браузером при нажатии на кнопку “отправить”, и потом они просто воспроизводятся без всякого браузера.
Иногда это невозможно сделать, к примеру взять сайт одноклассники. У вас задача выкачать оттуда все фотографии со всех альбомов какого-либо пользователя. Так вот там фотографии открываются во фрейме, ссылка на страницу которого генерируется в обфусцированном js-коде, а также ссылка на фотографии временные по токенам. Селениум позволяет эти препятствия обойти.

Отредактировано wi34rd (Фев. 26, 2017 02:59:15)

Офлайн

#4 Фев. 27, 2017 00:39:25

rastarokot
Зарегистрирован: 2017-02-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

py.user.next
Я понимаю, что обосрать новичков на форуме, потешив свое ЧСВ - это задача номер один Но можно узнать, что конкретно показалось смешным в моей фразе?
Я, как новичок, начал гуглить варианты, как можно справиться с задачей, которую себе поставил; выяснил, что есть определенные инструменты, и попробовал задать вопрос, как с ними лучше обходиться… И?


Давайте все же остановимся на конкретной задаче. Задача - получить url из текущей вкладки открытого окна браузера. Очень желательно - именно хрома.

Я попробую обрисовать ситуацию яснее, сорри, если снова получится коряво. Есть сайт, где люди скидываются на переводы с английского языка за небольшие для каждого участника деньги. Мне, как переводчику, необходимо помечать оплативших перевод, чтобы знать, кому его уже выдавать.
На основной странице темы перевода находится список всех участников складчины с чекбоксом возле каждого ника. При помечании мною чекбокса участника и нажатии на кнопку “пометить как оплатившего” участнику предоставляется доступ к отдельной странице, на которой расположена ссылка для скачивания перевода. На этой отдельной странице (на которую можно попасть по ссылке из основной страницы темы перевода) мне вдобавок надо добавить ник участника под “хайд”.
Мне хочется сократить все эти действия до одного - скажем, выделения ника участника и запуска скрипта, который автоматически пометит его чекбокс, откроет страницу с ссылкой под хайдом и сделает хайд видимым для данного ника.
По идее, все вышеизложенное должен уметь делать Селениум (кажется, я повторяюсь), но делать он умеет что-то лишь в новом окне. Пускай так - но нужно тогда, чтобы новое окно он открывал именно по тому адресу, который до этого был в старом окне.
Именно поэтому я и пытаюсь понять, как в окне браузера получить url текущей вкладки.


Офлайн

#5 Фев. 27, 2017 01:35:47

wi34rd
Зарегистрирован: 2016-10-08
Сообщения: 89
Репутация: +  2  -
Профиль   Отправить e-mail  

Офлайн

#6 Фев. 27, 2017 04:17:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

rastarokot
Я попробую обрисовать ситуацию яснее
Вот инфа с сайта Selenium'а
http://www.seleniumhq.org/
What is Selenium?

Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.

Selenium не используется для автоматизации, потому что он слишком неудобно сделан. Его основная задача - изобразить браузер и посмотреть, всё ли в нём работает при просмотре сайта, поэтому он там даже окно браузера открывает, когда его запускаешь, максимально приближая условия к реальным. Поэтому он и медленный, поэтому и данные неудобно передавать из него и в него. Потому что он не для этого сделан.

То, что ты описал, - для этого браузер не нужен, всё превращается в набор запросов, которые посылаются на сайт без всякого браузера. Всех этих людей ты просто скачиваешь на диск, сохраняешь в файл их список и информацию какую-нибудь про них, потом формируешь по этим данным, что нужно отправить обратно, и потом отправляешь точно так же - просто формируя запрос. И потом ты сайт открываешь, а там уже всё расставлено правильно, всё внесено и так далее. Спроси, кто бы здесь стал делать это Selenium'ом, ты никого не найдёшь, потому что это долго, потому что это неудобно, потому это фигня какая-то, которую даже не встроишь потом никуда (cron и прочее), так как будут постоянно окна какие-то вылазить.



Отредактировано py.user.next (Фев. 27, 2017 04:19:49)

Офлайн

#7 Фев. 27, 2017 12:26:39

rastarokot
Зарегистрирован: 2017-02-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

wi34rd
https://seleniumhq.github.io/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html?highlight=current%20url#selenium.webdriver.remote.webdriver.WebDriver.current_url

да, но этот url он берет из вкладкок, которые создаются в том новом окне, которое создает драйвер селениума при запуске; этим вкладки создаются уже в процессе работы с селениумом
я же хотел сделать так, чтобы url брался из одной из тех вкладок, которые у меня уже есть в текущем окне хрома

py.user.next
То, что ты описал, - для этого браузер не нужен, всё превращается в набор запросов, которые посылаются на сайт без всякого браузера. Всех этих людей ты просто скачиваешь на диск, сохраняешь в файл их список и информацию какую-нибудь про них, потом формируешь по этим данным, что нужно отправить обратно, и потом отправляешь точно так же - просто формируя запрос. И потом ты сайт открываешь, а там уже всё расставлено правильно, всё внесено и так далее. Спроси, кто бы здесь стал делать это Selenium'ом, ты никого не найдёшь, потому что это долго, потому что это неудобно, потому это фигня какая-то, которую даже не встроишь потом никуда (cron и прочее), так как будут постоянно окна какие-то вылазить.
Спасибо. Наверное, с Селениумом я пошел не туда - просто я наткнулся в гугле на несколько ссылок, где люди разбирали подходящие примеры из кода именно на его функционале. А можешь подсказать, в какую сторону копать, чтобы разобраться с тем, как формировать запросы? И - какими инструментами они потом отправляются, если не с помощью браузера?

Офлайн

#8 Фев. 27, 2017 13:54:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

rastarokot
А можешь подсказать, в какую сторону копать, чтобы разобраться с тем, как формировать запросы?
Писал здесь.

rastarokot
И - какими инструментами они потом отправляются, если не с помощью браузера?
Питоном самим. Любой браузер использует протокол HTTP для взаимодействия с сервером. Это текстовый протокол, его можно использовать напрямую, без браузера (хоть через telnet).



Офлайн

#9 Март 3, 2017 11:57:35

rastarokot
Зарегистрирован: 2017-02-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Получить url из текущей открытой вкладке в хроме

py.user.next
Спасибо, покопаюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version