Python: автоматизация ввода в полях внутри всплывающего окна в открытом браузере

#python

#python

Вопрос:

Пользователи Python, я редактирую этот пост, чтобы было понятнее, что я пытаюсь сделать. Я прикрепил изображение (надеюсь, это видно другим зарегистрированным пользователям, поскольку у меня нет прав на загрузку изображений) того, как оно выглядит на веб-сайте, который я использую. В принципе, после того, как я захожу на веб-сайт и выбираю, какие данные я хотел бы получить, я сталкиваюсь с экраном с несколькими кнопками, одна из которых — кнопка Excel для загрузки данных в формате Excel. Когда я нажимаю на кнопку Excel, на странице появляется всплывающее окно в соответствии с прикрепленным изображением. Это всплывающее окно фиксируется на экране (я не могу его переместить, но если я щелкну за его пределами, оно исчезнет и оставит меня на веб-странице до нажатия кнопки Excel). Из этого всплывающего окна в выпадающем меню «Для каких компаний?» Мне нужно выбрать «Ряд компаний», затем мне нужно удалить текст в поле «Имя:» и ввести другое имя, например, имя 1. А затем в поле «откуда» мне нужно ввести 1, а в поле «кому» мне нужно ввести 47619. Затем мне нужно нажать на кнопку «Экспорт». При нажатии кнопки «Экспорт» база данных получает указание загрузить данные для этих 47619 компаний в фоновом режиме. Затем я повторяю процесс, т.Е. Имя: name2, от: 47620, до: 95238, Экспорт и так далее. Мои загрузки выполняются с шагом 47619 наблюдений, и моими шаблонами имен будут name1,name2, name3 ….name117. Именно по этой причине я пытаюсь автоматизировать вышеописанное в цикле, который следует приведенной выше структуре именования и приращению счетчика индекса 47619 для каждой загрузки данных.

Как только я закончу, я повторю все вышесказанное 200 раз (т.Е. 200 x 117), чтобы вы могли понять мой интерес к автоматизации этого.

webpage_example

Что я сделал до сих пор, так это найти координаты этой интерактивной кнопки Excel и заставить pyautogui нажать на эту кнопку — это сработало нормально. Что я не знаю, как сделать сейчас, так это как только появится всплывающее окно, заполнить поля, а также вызвать выпадающее меню и сделать там выбор). Я искал координаты, скажем, в поле «Name:», и хотел ввести в него, но он не отвечает. Пожалуйста, посмотрите, что я написал до сих пор (очень простой), но я не понимаю, как действовать дальше. Кто-то предложил locateonscreen, я изучил это и попытался сопоставить вырезанное изображение с printscreen в окне, но мне это не удалось. Я бы очень приветствовал любые идеи по этому поводу, пожалуйста, и заранее благодарю вас за ваши идеи по этому поводу. Ниже приведен код:

 import time
import pyautogui
import keyboard, time

#makes program execution pause for 5 sec - to give us a chance to click the open 
#window of interest 
time.sleep(5) 
pyautogui.position()

#excel button coordinates
pyautogui.click(x=1577,y=208)

#these are the co-ordinates on the pop-up window I want to type into 
#but it appears these are the same co-ordinates as the actual browser window and
#this is not doing anything
pyautogui.click(946,298);pyautogui.write('Hello world!') 
 

Комментарии:

1. Вы пробовали функцию locateonscreen из pyautogui?

2. Итак, насколько я понимаю… вам нужен код для загрузки архива EXCEL? Ссылка с сайта была бы полезна

3. Я отредактировал свой OP, чтобы дать больше разъяснений о том, что я пытаюсь сделать на Python. Прошу прощения, я не могу предоставить ссылку на веб-страницу — это база данных только для коммерческой подписки, и в любом случае для перехода к представлению данных, которые я пытаюсь извлечь, используя коды автоматизации на Python, потребуется войти в систему и выбрать дополнительные варианты выбора. Я также хотел бы уточнить, что процесс входа в систему — это аутентификация по протоколу Shibboleth, и я не смог сделать это с помощью Selenium в Python, поскольку это выходит за рамки моего опыта. Поэтому я вошел в систему вручную и понял, когда хочу автоматизировать загрузку.

4. Вы знакомы с тем, как работают веб-браузеры? Если вы сможете найти конечную точку, куда передаются данные, вы сможете получить их оттуда. Если он защищен логином, он может добавить некоторые шаги, чтобы это произошло, но не невозможно. Я не могу придумать почти никаких причин, по которым вам когда-либо придется писать скрипт на python, чтобы нажимать на что-либо в веб-браузере.

5. Я не думаю, что служба баз данных позволяет массово извлекать данные с помощью метода, который вы имеете в виду (вы имели в виду какую-то форму внутренней интеграции?). Я попробовал Selenium в Python, чтобы попытаться автоматизировать это (путем поиска элементов на веб-странице и ссылки на них), но я застрял в процессе входа в систему (вход в систему Shibboleth). Но тогда я не очень хорошо разбираюсь в этом и подумал, что, возможно, я мог бы справиться с этим через pyautogui…