Как управлять диалогом веб-страницы с помощью Python - PullRequest
0 голосов
/ 04 августа 2009

Когда я пытаюсь автоматически загрузить файл с какой-либо веб-страницы, используя Python, Я получаю диалоговое окно веб-страницы (я использую IE). В окне есть две кнопки, такие как «Продолжить» и «Отмена». Я не могу понять, как нажать на кнопку Продолжить. Проблема в что я не знаю, как управлять диалогом веб-страницы с Python. Я пытался использовать winGuiAuto, чтобы найти элементы управления окна, но он не может распознать любой тип кнопки контролирует ... идеи?

Саша

Уточнение моего вопроса:

Моя цель - загрузить биржевые данные с определенного веб-сайта. Мне нужно выполнить это для многих акций, поэтому мне нужно, чтобы Python делал это для меня повторяющимся образом. Этот конкретный сайт экспортирует данные, позволяя мне загрузить их в файл Excel, щелкнув ссылку. Однако после нажатия на ссылку я получаю диалоговое окно веб-страницы с вопросом, уверен ли я, что хочу скачать этот файл. Это диалоговое окно веб-страницы является моей проблемой - это не HTML-страница и это не обычное диалоговое окно Windows. Это что-то еще, и я не могу настроить, как управлять им с помощью Python. Он имеет две кнопки, и мне нужно нажать на одну из них (т.е. продолжить). Кажется, это особый вид окна, реализованный в IE. Он отличается своим названием, которое выглядит так: Диалог веб-страницы - Скачать blalblabla. Если я нажимаю «Продолжить» вручную, он открывает обычное диалоговое окно Windows (открыть, сохранить, отменить), которое я знаю, как обращаться с библиотекой winGuiAuto. Попытка использовать эту библиотеку для диалогового окна веб-страницы без удачи. Пробовал распознавать кнопки с помощью инструмента Autoit Info - тоже не повезло. На самом деле, возможно, это не кнопки, а на самом деле ссылки, однако я не вижу ссылок, и исходный код не виден ... Мне нужен кто-то, кто скажет мне, что такое диалоговое окно веб-страницы и как им управлять Python. Это был мой вопрос.

Ответы [ 3 ]

0 голосов
/ 13 апреля 2013

Название «Диалог веб-страницы» предполагает, что это поле ввода, сгенерированное Javascript, поэтому вы не можете получить к нему доступ через winGuiAuto. То, что вы спрашиваете напрямую, вряд ли возможно.

Однако, если предположить, что вы просто хотите загрузить эти данные с сайта, почему вы вообще используете графический интерфейс? Python предоставляет все необходимое для загрузки файлов из Интернета без управления IE. Процесс, которому вы захотите следовать:

  1. Скачать страницу хоста
  2. Найдите URL-адрес для загрузки на странице (если он изменяется)
  3. Загрузить файл с этого URL в локальный файл

В Python это будет выглядеть примерно так:

import urllib,re

f = urllib.urlopen('http://yoursitehere') # Original page where the download button is
html = f.read()
f.close()

m = re.search('/[\'"](.*\.xls)["\']/', html, re.S) # Find file ending .xls in page
if m:
    urllib.urlretrieve(m.group(1), 'local_filename.xls') # Retrieve the Excel file
0 голосов
/ 29 августа 2014

Лучше использовать привязки селена Python:

from selenium import webdriver
from selenium.webdriver.common import alert
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
class AlertsManager:
    def alertsManager(self,url):
        self.url_to_visit=url
        self.driver=webdriver.Ie()
        self.driver.get(self.url_to_visit)
        try:
            while WebDriverWait(self.driver,1).until(EC.alert_is_present()):
                self.alert=self.driver.switch_to_alert()
                self.driver.switch_to_alert().accept()
        except TimeoutException:
            pass


if __name__=='__main__':
    AM=AlertsManager()
    url="http://htmlite.com/JS006.php" # This website has 2 popups
    AM.alertsManager(url)
0 голосов
/ 04 августа 2009

Ты не можешь и не хочешь. Когда вы задаете вопрос, попробуйте объяснить, чего вы пытаетесь достичь, а не только задачу непосредственно перед вами. Вы, вероятно, лаете по неверному пути. Есть и другой способ сделать то, что вы пытаетесь сделать.

...