Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2017, 19:08   #1
stormm
Новичок
Джуниор
 
Регистрация: 07.09.2017
Сообщений: 2
По умолчанию Загрузка файла в Awesomium

Подскажите пожалуйста как правильно загрузить файл на сайт через <input>? Перепробовал уже все возможные варианты кликов по элементу но диалог загрузки файла не открывается. Есть программа работающая через Webbrowser там все работает нормально и клик по этому инпуту открывает окно загрузки. Если возможно как-то программно указать путь к файлу то это было бы еще лучше.
Вот код элемента:

Цитата:
<input multiple="multiple" type="file" name="file" style="position: absolute; right: 0px; top: 0px; font-family: Arial; font-size: 118px; margin: 0px; padding: 0px; cursor: pointer; opacity: 0;" class="">
stormm вне форума Ответить с цитированием
Старый 07.09.2017, 19:12   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Кликнуть и обрабатывать соответствующее событие Awesomium.
Может кликаете куда-то не туда.

Вообще для автоматизации обычно проще Selenium использовать. Awesomium для другого предназначался + на него забили давно разработчики и там древний хромиум.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.09.2017, 20:03   #3
stormm
Новичок
Джуниор
 
Регистрация: 07.09.2017
Сообщений: 2
По умолчанию

Вот такой код пробовал использовать для клика:
Код:
            int count2 = Count_tag("input");
            for (int i = 0; i < count2; i++)
            {
                dynamic inp = (JSObject)webControl1.ExecuteJavascriptWithResult("document.getElementsByTagName('input')[" + i.ToString() + "]");
                string ss = inp.getAttribute("type"); 
                if (ss.IndexOf("file")!=-1)
                {
                    //inp.invoke("click");
                    //webControl1.ExecuteJavascriptWithResult("document.getElementsByTagName('input')[" + i.ToString() + "].click");
                    JsFireEvent("document.getElementsByTagName('div')[" + i.ToString() + "]", "click");
                    rt_log.AppendText("Кликнули по инпуту\n");
                }
            }


     public void JsFireEvent(string getElementQuery, string eventName)
        {
            webControl1.ExecuteJavascript(@"
                        function fireEvent(element,event) {
                            var evt = document.createEvent('HTMLEvents');
                            evt.initEvent(event, true, false ); // event type,bubbling,cancelable
                            element.dispatchEvent(evt);                                 
                        }
                        " + String.Format("fireEvent({0}, '{1}');", getElementQuery, eventName));
        }
Попробую поработать с Selenium. В принципе "переход" с Webbrowser на Awsomium не занял много времени надеюсь с Selenium не будет сложнее.
Если я правильно понял то речь идет о событии SelectLocalFiles. Пробовал с ним работать но ничего не получилось. Если можно хотелось бы увидеть простой пример работы с этим событием.

Последний раз редактировалось Alex11223; 07.09.2017 в 20:12.
stormm вне форума Ответить с цитированием
Старый 07.09.2017, 22:23   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А, да, я по координатам кликал как-то так:
Код:
        dynamic dlgs = webView.GetElementsBy.......;
        
        if (dlgs == null || dlgs.length == 0)
            throw new Exception("......");

        using (dlgs)
        {
            dynamic dlg = dlgs[0];

            using (dlg)
            {
                dlg.style.opacity = "1";
                dlg.scrollIntoView();

                webView.ExecuteJavascriptWithResult("window.scrollBy(0, -120)");

                Point dlgPos = WebViewExtensions.GetElementPosition(dlg);

                if (((int)dlgPos.X) == 0)
                    throw new Exception("..........");

                FileDialogEventHandler dlgHandler = null;
                dlgHandler = (sender, args) =>
                {
                    args.SelectedFile = ...;
                    args.Handled = EventHandling.Modal;

                    webView.SelectLocalFiles -= dlgHandler;
                };
                webView.SelectLocalFiles += dlgHandler;

                webView.Click(new Point(dlgPos.X + 20, dlgPos.Y + 10));
            }
        }
GetElementPosition и GetElementsBy* отсюда
https://gist.github.com/AlexP11223/8286153
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
полная загрузка страницы (awesomium ) Soulyou12 C# (си шарп) 5 01.06.2015 18:30
Загрузка файла Green4el PHP 3 04.05.2012 14:51
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
загрузка из файла RAVAL)) Общие вопросы Delphi 2 04.03.2009 12:48
Загрузка из файла Raivolo Помощь студентам 3 05.02.2009 22:25