public static void DragFileFromExplorer(string filePath, Point dropTarget) { var explorerProcess = Process.Start("explorer.exe", Path.GetDirectoryName(filePath)); if (explorerProcess == null) { throw new Utilities.CannotOpenExplorerException(); } Thread.Sleep(DefaultTimeout); AutomationElement explorerWindow = null; try { explorerWindow = ElementFinder.TryFindElement(AutomationElement.RootElement, Utilities.GetExplorerWindowTitle(filePath), "window", DefaultTimeout); Utilities.AlignWindowToRight(); ElementActions.InsertText(ElementFinder.TryFindElement(explorerWindow, "search box", "edit", DefaultTimeout), Path.GetFileName(filePath)); Thread.Sleep(1000); var file = ElementFinder.TryFindElement(explorerWindow, Path.GetFileName(filePath), "list item", DefaultTimeout); var filePoint = file.Current.BoundingRectangle.TopLeft; filePoint.Offset(file.Current.BoundingRectangle.Width / 2, file.Current.BoundingRectangle.Height / 2); ElementActions.DragDrop(filePoint, dropTarget); ElementActions.ClickElement(ElementFinder.TryFindElement(explorerWindow, "close", "button", DefaultTimeout)); } catch (Exception e) { ElementActions.ClickElement(ElementFinder.TryFindElement(explorerWindow, "close", "button", DefaultTimeout)); throw e; } }
public static void Login(AutomationElement mainWindow, string logine, string passworde) { if (mainWindow == null) { throw new ArgumentNullException("Login"); } ElementActions.InsertTextWorkaround(ElementFinder.TryFindElement(mainWindow, "логин", "edit", DefaultTimeout), logine); ElementActions.InsertTextWorkaround(ElementFinder.TryFindElement(mainWindow, "пароль", "edit", DefaultTimeout), passworde); ElementActions.ClickElement(ElementFinder.TryFindElement(mainWindow, "войти ", "button", DefaultTimeout)); Thread.Sleep(DefaultTimeout); }
public static void ChooseFile(AutomationElement mainWindow, string path) { if (mainWindow == null) { throw new ArgumentNullException("ChooseFile"); } ElementActions.ClickElement(ElementFinder.TryFindElement(mainWindow, "Choose Files Загрузить", "button", DefaultTimeout.Add(DefaultTimeout))); var uploadDialog = ElementFinder.TryFindElement(mainWindow, "Open", "dialog", DefaultTimeout, TreeScope.Children); var address = ElementFinder.TryFindElement(uploadDialog, "file name:", "edit", DefaultTimeout); //InsertText(address, path); //WORKAROUND: SendKeys.SendWait(path); ElementActions.ClickElement(ElementFinder.TryFindElement(uploadDialog, "Open", "button", DefaultTimeout)); }
public static void MonitorDownload(AutomationElement browserWindow) { if (browserWindow == null) { throw new ArgumentNullException("MonitorDownload"); } Console.WriteLine("...Please wait ~2 minutes. Checking if file was uploaded before..."); var replaceButton = ElementFinder.TryFindElement(browserWindow, "заменить ", "button", TimeSpan.FromSeconds(0)); if (replaceButton != null) { ElementActions.ClickElement(replaceButton); } ElementFinder.TryFindElement(browserWindow, "загрузка завершена", "text", DefaultTimeout); Console.WriteLine("\nDone!"); }
static int Main(string[] args) { if (args.Length < 1) { Console.WriteLine("Please pass path of the file to upload as command line parameter"); return(3); } var filePath = Path.GetFullPath(args[0]); if (!File.Exists(filePath)) { Console.WriteLine("File does not exist"); return(4); } var browserProcess = Process.Start("chrome.exe", "https://disk.yandex.ru/ -incognito --force-renderer-accessibility"); if (browserProcess == null) { return(1); } Thread.Sleep(YadiskActions.DefaultTimeout); AutomationElement browserWindow; try { browserWindow = AutomationElement.FromHandle(browserProcess.MainWindowHandle); Utilities.AlignWindowToLeft(); } catch (InvalidOperationException) { Console.WriteLine("Close all browser windows and relaunch the programm"); Console.ReadKey(); return(2); } try { YadiskActions.Login(browserWindow, LOGIN, Password); YadiskActions.DragFileFromExplorer(filePath, ElementFinder.TryFindElement(browserWindow, "Загрузить файлы", "text", YadiskActions.DefaultTimeout).Current.BoundingRectangle.TopLeft); YadiskActions.MonitorDownload(browserWindow); } catch (ArgumentNullException e) { Console.WriteLine(e.Message); } catch (Utilities.CannotOpenExplorerException e) { Console.WriteLine("Cannot open explorer!"); } Console.WriteLine("Press any key to close the program..."); Console.ReadKey(); browserProcess.Kill(); return(0); }