Я довольно новичок в Python и создаю робота для экспорта некоторых отчетов из системы в Silverlight. Поэтому я не могу использовать элементы страницы, чтобы щелкать / выбирать / вставлять даты и т. Д.
Затем мое решение использовало pyautogui
для перемещения мыши, нажатия правой кнопки и сохранения файлов. ...
Процесс:
-Выберите даты отчета
-Нажмите на «команда», мне нужен отчет для
-Нажмите кнопку предварительного просмотра (здесь откроется новое окно)
- Максимизируйте это окно, содержащее отчет
- Нажмите кнопку «Экспорт» (раскрывающийся список)
-Выберите «Экспорт в CSV»
А затем с помощью кода получите последний загруженный файл и переместите его в папку, где я сохраняю отчеты.
Узкое место в этом: иногда из-занеизвестная причина, кнопка «Экспорт» составляет 20/30 пикселей в сторону. Это означает, что робот щелкает в никуда, и код останавливается, так как нет «последнего загруженного файла» для обработки. Я уже заметил, что это второе окно (где открывается отчет) не в Silverlight. Это простой HTML. Я знаю, что мог бы использовать некоторые методы в selenium
, чтобы выбрать опцию «Экспорт / Экспорт в CSV» (так же, как я делал для входа в эту систему). Но моя проблема: как мне обратиться к этому новому окну?
Код, который я использую, ссылается на главную страницу, используя selenium.wedriver
, но я не смог найти способ обратиться к новому окну (которое закрывается после того, как я загрузил CSV. Затем я снова нажимаю в«Предварительный просмотр» и другое окно открывается, и процесс повторяется сотни раз) ...
wsite='https://WEBSITE TO EXTRACT'
driver = webdriver.Ie('C:\\MyFolder\\IEDriverServer.exe')
driver.get(wsite) #opens the site
driver.find_element_by_id('userNameInput').send_keys('USERNAME')
driver.find_element_by_id ('passwordInput').send_keys('PASSWORD')
driver.find_element_by_id('submitButton').click()
Затем, есть много строк кода (где мышь щелкает, где это необходимо ...
pyautogui.moveTo(1846,1000,intervaltoclick)#Preview button
pyautogui.click()
time.sleep(3)
hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
if i<1:
time.sleep(10+t)
else:
time.sleep(5+(t/5))
pyautogui.moveTo(566,52,intervaltoclick)#Export
pyautogui.click()
pyautogui.moveTo(603,205,intervaltoclick)#Save as CSV
pyautogui.click()
time.sleep(3)
pyautogui.moveTo(1270,1025,intervaltoclick)#close window
pyautogui.click()
У кого-нибудь есть идеи, как мне это сделать?