Coder Social home page Coder Social logo

saucepleez / taskt Goto Github PK

View Code? Open in Web Editor NEW
998.0 67.0 335.0 259.6 MB

taskt (pronounced 'tasked' and formely sharpRPA) is free and open-source robotic process automation (rpa) built in C# powered by the .NET Framework

Home Page: http://www.taskt.net/

C# 100.00%
process automation rpa ui robotics robot-framework robots

taskt's Introduction

taskt

taskt (formerly sharpRPA) is the first truly free, easy to use, and open-source process automation client built on the .NET Framework in C#. taskt allows you to build and design process automation without needing to write application code.

License Open Source Love svg1

branch build status
master Build Status
development-branch Build Status

taskt-main-screen

Click. Configure. Done. taskt allows you to automate the boring stuff and create efficienies by giving you the power to craft a digital workforce that executes and performs rule-based automation. No API? No Problem! Included is a "what you see is what you get" bot designer with dozens of automation commands. An element recorder and screen recorder is also included that can record and replay scripted automation.

Recorder

How does taskt work? taskt works by allowing a bot developer to design a bot configuration known as a script. The bot configuration is then intepreted by a script engine at run-time and executes against the bot developer's selected parameter inputs. Each command contains the definitions for the required inputs as well as the required logic at run-time. Please check out the Wiki for basic documenation surrounding the application and the available commands

Configuring Tasks

What can taskt do? taskt can perform automation on both web and desktop applications, simulating the actions a person would do. From swivel-chair data entry to report generation, taskt can handle your automation needs. Prefer to write and implement code? taskt can use your existing .NET DLLs and services additionally with the ability to compile code on the fly using the Custom Code command! taskt can start and stop processes, launch VB and PowerShell scripts, work directly with Excel workbooks, and perform OCR (OneNote installation required) among many other functions. You can review all the automation commands by clicking here.

Manage Your Workforce CURRENTLY IN ALPHA Manage and orchestrate your digital workforce with taskt's optional server component that allows you to publish and execute tasks remotely as well as monitor the overall health of your bots and discover metrics around your robot workers.

tasktServer

How can I get started? Find and download the latest signed release by clicking HERE. Extract to any folder and double-click 'taskt.exe'. taskt will ask if you want to create a scripts folder to store your scripts as well as copy and deploy sample files. You can also build directly from source -- take the latest from the master branch!

What does taskt Cost? taskt is free for both personal and commercial use. taskt is licensed under the Apache 2.0 License -- see LICENSE.md for further details. As a community-driven project, the goal of taskt is to give everyone, big or small, the ability to build and deploy process automation.

Let us know what you think! Feel free to open up a feature request or report a bug/issue.

System specifications

Please note whatever software that taskt is automating can affect the minimum software requirements.

Minimum

  • Windows 7/8.1/10/Server 2012/Server 2016
  • 1GB ram
  • 200MB disk space
  • 1 vCPU
  • .NET Framework 4.8

Recommended

  • Windows 10/Server 2012/Server 2016/Server 2019
  • 4GB ram
  • 1GB disk space
  • 2 CPU
  • .NET Framework 4.8

Open New Issue Chat on Gitter

taskt's People

Contributors

ahmed-hamdan avatar atotalnoob avatar faro1991 avatar mbhatti125 avatar mohammed-hani avatar mondemonde avatar naga1992 avatar openbots-ff avatar rcktrncn avatar saucepleez avatar virtualfab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taskt's Issues

More useful error handling

@saucepleez at current version we have only two ways if error is thrown in command:
continue or stop. Can you modify it like try catch finally in c#. I mean if error is thrown, then i can do some commands or if it ok - then some commans. Maybe it could be added to types for command If an addition to other... Like this:

  1. Error Handling [Action: Continue Processing]
  2. Activate Window [Target Window: Skype]
  3. If Error thrown
    
  4.      // Comment: Items in this section will run if the statement is true
    
  5.      Show Message [Message: There is now window opened like Skype]
    
  6. Else
    
  7.      Show Message [Message: All ok, i'll activate window]
    
  8. End If
    

Error Handling may save Exception string to variable )

Error when open command If equal

@saucepleez today i'll pull all commits and then test my script, but have error when run:

2018-10-08 09:40:54.716 +03:00 [INF] Running Line 36: If ([Gender] is equal to Мужчина)
2018-10-08 09:40:54.902 +03:00 [INF] Result Code: Error
2018-10-08 09:40:54.902 +03:00 [INF] Error: System.Exception: System.Exception: System.Exception: System.ArgumentException: Строка не может иметь нулевую длину.
Имя параметра: oldValue
   в System.String.ReplaceInternal(String oldValue, String newValue)
   в System.String.Replace(String oldValue, String newValue)
   в taskt.Core.ExtensionMethods.ConvertToUserVariable(String str, Object sender) в C:\src\taskt\taskt\Core\ExtensionMethods.cs:строка 50
   в taskt.Core.AutomationCommands.BeginIfCommand.RunCommand(Object sender, ScriptAction parentCommand) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 4140
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 192
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 231
   в taskt.Core.AutomationCommands.BeginIfCommand.RunCommand(Object sender, ScriptAction parentCommand) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 4354
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 192
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 231
   в taskt.Core.AutomationCommands.BeginContinousLoopCommand.RunCommand(Object sender, ScriptAction parentCommand) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 2551
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 192
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 231
   в taskt.Core.AutomationEngineInstance.ExecuteScript(String filePath) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 108

And when i try to change this command by double click on it, then have error too:
error.txt

Here
image

I'll check other If command where type is Value - same error.

Add Schedule Task Command

Create a command that schedules a task to be run with specified parameters (run once, multiple times, etc)

Restructure Command Checks

Instead of consistently checking if the parentCommand matches a type

if ((parentCommand is Core.AutomationCommands.BeginNumberOfTimesLoopCommand) || (parentCommand is Core.AutomationCommands.BeginContinousLoopCommand) || (parentCommand is Core.AutomationCommands.BeginListLoopCommand) || (parentCommand is Core.AutomationCommands.BeginIfCommand) || parentCommand is Core.AutomationCommands.BeginExcelDatasetLoopCommand)

Create an Extension Method or some other way to easily check:

Command.IsType(Loop) or parentCommand is LoopCommand

WildCards in selector and window names

@saucepleez it will be great feature if we can use wildcards like * in Windows names and selectors in browsers and gui. Sometimes window name is dynamic and depends on inner data in application like number or unread messages and so on.

Date Format error

Date format error

This a mistake and must be deleted. It is working fine.

Review Task Variable Conversion

Review Task Variable Conversion. Variables should not convert like v_TaskVar.ConvertToUserVariable(sender) because of the consequences within loops. Instead, a local variable should be created such as `var tempVar = v_TaskVar.ConvertToUserVariable(sender);

Possibility to add task command to any position in sequence

Example. A have sequence of commands. Then, i need to add some commands to the middle of my sequence. I add it consequentially and then move it by mouse to exact positions. Maybe we can analize current cursor position in sequence at right and add new command after it? Or maybe there are drag&drop function from left to right?

reading excel error

When you run an excel file twice. then you get this error:

an item with the same key already been added

Define Variables by a specific type

Variables currently do not allow a type (number, string, decimal, list, etc) to be specified. Potentially look at adding functionality to override default behavior and allow the user to select the type of variable and enforce variables against known types.

Error and stop task from scheduler

@saucepleez hi. If i run taskt, then open my script - all ok. But, if i create from application task in windows scheduler and run it, TaskT starts, open my script and then fail/break. Here the log:

2018-10-03 15:38:13.632 +03:00 [INF] Engine Class has been initialized
2018-10-03 15:38:13.686 +03:00 [INF] Client requesting to execute script using frmEngine
2018-10-03 15:38:13.689 +03:00 [INF] Script Path: C:\Users\m_shubin\Documents\taskt\My Scripts\AddTaksToERP.xml
2018-10-03 15:38:13.690 +03:00 [INF] Bot Engine Started: 03.10.2018 15:38:13
2018-10-03 15:38:13.718 +03:00 [INF] Deserializing File
2018-10-03 15:38:14.490 +03:00 [INF] Creating Variable List
2018-10-03 15:38:14.500 +03:00 [INF] Creating App Instance Tracking List
2018-10-03 15:38:14.523 +03:00 [INF] Result Code: Error
2018-10-03 15:38:14.523 +03:00 [INF] Error: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
   в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
   в taskt.UI.Forms.frmScriptEngine.UpdateLineNumber(Int32 lineNumber) в C:\dev\taskt\taskt\UI\Forms\frmScriptEngine.cs:строка 285
   в taskt.UI.Forms.frmScriptEngine.EngineInstance_LineNumberChangedEvent(Object sender, LineNumberChangedEventArgs e) в C:\dev\taskt\taskt\UI\Forms\frmScriptEngine.cs:строка 179
   в taskt.Core.AutomationEngineInstance.LineNumberChanged(Int32 lineNumber) в C:\dev\taskt\taskt\Core\AutomationEngine.cs:строка 299
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\dev\taskt\taskt\Core\AutomationEngine.cs:строка 133
   в taskt.Core.AutomationEngineInstance.ExecuteScript(String filePath) в C:\dev\taskt\taskt\Core\AutomationEngine.cs:строка 103

same thing happend if i run takst.exe with cmd args

Date Calculations

Users should be able to specify calculation logic specifically for dates.

Error in Find element by CSS or XPath Click action

Hi @saucepleez, i'll run my script in new version from devbranch and have a error which was not there before.
2018-10-22 09:53:31.189 +03:00 [INF] Running Line 7: Element Action [Find Element By XPath and Left Click, Instance Name: 'default'] 2018-10-22 09:53:31.417 +03:00 [INF] Result Code: Error 2018-10-22 09:53:32.220 +03:00 [INF] Error: System.Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Не удается неявно преобразовать тип "int" в "string" в CallSite.Target(Closure , CallSite , Object ) в taskt.Core.AutomationCommands.SeleniumBrowserElementActionCommand.RunCommand(Object sender) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 1092 в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 212 в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 233 в taskt.Core.AutomationEngineInstance.ExecuteScript(String filePath) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 110

It stops when you use the End key.

Hello, saucepleez
I use taskt, but when I want to scroll to the bottom of the screen
If you enter {END}, processing stops halfway.
Is there any good solution?

Add 'Exit Loop' Command

During Loop execution, users should have the ability to break out of loops by using an 'Exit Loop' Command. The command can be buried within conditional commands.

Identified by @msshubin

Error in new script in first command

Hi @saucepleez . I Create new script, then double click to command Text Extraction, then add follow:
image
after click OK i have:
2018-10-04_09-50-34
Full text error in this window:
FullErrorText.txt

If i click Continue - all ok and i can do what i need. If then i double click to this existing command and click again Ok - there are no error.

Bug when send keystrokes after change variable

@saucepleez hi. I check this case in different ways and receive not good result.
Here are sample script that shows wrong stuff:

<?xml version="1.0" encoding="utf-8"?>
<Script xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Commands>
    <ScriptAction>
      <ScriptCommand xsi:type="StartProcessCommand" CommandName="StartProcessCommand" IsCommented="false" SelectionName="Start Process" DefaultPause="250" LineNumber="1" PauseBeforeExeucution="false" CommandEnabled="true" v_ProgramName="c:\Windows\system32\notepad.exe" />
    </ScriptAction>
    <ScriptAction>
      <ScriptCommand xsi:type="StringSplitCommand" CommandName="StringSplitCommand" IsCommented="false" SelectionName="Split" DefaultPause="250" LineNumber="2" PauseBeforeExeucution="false" CommandEnabled="true" v_userVariableName="list" v_splitCharacter=" " v_applyConvertToUserVariableName="[splitted]" />
    </ScriptAction>
    <ScriptAction>
      <ScriptCommand xsi:type="BeginListLoopCommand" CommandName="BeginListLoopCommand" IsCommented="false" SelectionName="Loop List" DefaultPause="250" LineNumber="3" PauseBeforeExeucution="false" CommandEnabled="true" v_LoopParameter="[splitted]" />
      <AdditionalScriptCommands>
        <ScriptCommand xsi:type="VariableCommand" CommandName="VariableCommand" IsCommented="false" SelectionName="Set Variable" DefaultPause="250" LineNumber="4" PauseBeforeExeucution="false" CommandEnabled="true" v_userVariableName="current" v_Input="[splitted]" />
      </AdditionalScriptCommands>
      <AdditionalScriptCommands>
        <ScriptCommand xsi:type="LogDataCommand" CommandName="LogDataCommand" IsCommented="false" SelectionName="Log Data" DefaultPause="250" LineNumber="5" PauseBeforeExeucution="false" CommandEnabled="true" v_LogFile="Engine Logs" v_LogText="[current]" />
      </AdditionalScriptCommands>
      <AdditionalScriptCommands>
        <ScriptCommand xsi:type="SendKeysCommand" CommandName="SendKeysCommand" IsCommented="false" SelectionName="Send Keystrokes" DefaultPause="250" LineNumber="6" PauseBeforeExeucution="false" CommandEnabled="true" v_WindowName="Current Window" v_TextToSend="[current]{ENTER}" />
      </AdditionalScriptCommands>
      <AdditionalScriptCommands>
        <ScriptCommand xsi:type="PauseCommand" CommandName="PauseCommand" IsCommented="false" SelectionName="Pause Script" DefaultPause="250" LineNumber="7" PauseBeforeExeucution="false" CommandEnabled="true" v_PauseLength="2000" />
      </AdditionalScriptCommands>
      <AdditionalScriptCommands>
        <ScriptCommand xsi:type="EndLoopCommand" CommandName="EndLoopCommand" IsCommented="false" SelectionName="End Loop" DefaultPause="0" LineNumber="8" PauseBeforeExeucution="false" CommandEnabled="true" />
      </AdditionalScriptCommands>
    </ScriptAction>
  </Commands>
  <Variables>
    <ScriptVariable>
      <VariableName>current</VariableName>
      <VariableValue xsi:type="xsd:string"></VariableValue>
    </ScriptVariable>
    <ScriptVariable>
      <VariableName>list</VariableName>
      <VariableValue xsi:type="xsd:string">one two three four five six seven eight nine ten</VariableValue>
    </ScriptVariable>
    <ScriptVariable>
      <VariableName>splitted</VariableName>
      <VariableValue xsi:type="xsd:string"></VariableValue>
    </ScriptVariable>
  </Variables>
</Script>

Here in log:

2018-10-05 08:41:11.071 +03:00 [INF] Engine Class has been initialized
2018-10-05 08:41:11.071 +03:00 [INF] Client requesting to execute script using frmEngine
2018-10-05 08:41:11.071 +03:00 [INF] Script Path: C:\Users\m_shubin\Documents\taskt\My Scripts\testloopchangevariables.xml
2018-10-05 08:41:11.071 +03:00 [INF] Bot Engine Started: 05.10.2018 8:41:11
2018-10-05 08:41:11.103 +03:00 [INF] Deserializing File
2018-10-05 08:41:11.103 +03:00 [INF] Creating Variable List
2018-10-05 08:41:11.103 +03:00 [INF] Creating App Instance Tracking List
2018-10-05 08:41:11.103 +03:00 [INF] Running Line 1: Start Process [Process: c:\Windows\system32\notepad.exe]
2018-10-05 08:41:13.155 +03:00 [INF] Running Line 2: Split [Split 'list' by ' ' and apply to '[splitted]']
2018-10-05 08:41:13.170 +03:00 [INF] Running Line 3: Loop List Variable '[splitted]'
2018-10-05 08:41:13.186 +03:00 [INF] Starting Loop Number 1/10 From Line 3
2018-10-05 08:41:13.186 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:13.186 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:13.217 +03:00 [INF] one
2018-10-05 08:41:13.217 +03:00 [INF] Running Line 6: Send Keystrokes [Send '[current]{ENTER}' to 'Current Window']
2018-10-05 08:41:13.862 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:15.889 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:15.904 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:15.904 +03:00 [INF] Starting Loop Number 2/10 From Line 3
2018-10-05 08:41:15.904 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:15.941 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:15.944 +03:00 [INF] two
2018-10-05 08:41:15.974 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:16.618 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:18.655 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:18.671 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:18.671 +03:00 [INF] Starting Loop Number 3/10 From Line 3
2018-10-05 08:41:18.671 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:18.690 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:18.718 +03:00 [INF] three
2018-10-05 08:41:18.718 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:19.359 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:21.383 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:21.399 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:21.399 +03:00 [INF] Starting Loop Number 4/10 From Line 3
2018-10-05 08:41:21.399 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:21.414 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:21.445 +03:00 [INF] four
2018-10-05 08:41:21.445 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:22.086 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:24.110 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:24.126 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:24.126 +03:00 [INF] Starting Loop Number 5/10 From Line 3
2018-10-05 08:41:24.126 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:24.141 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:24.157 +03:00 [INF] five
2018-10-05 08:41:24.173 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:24.834 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:26.860 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:26.860 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:26.876 +03:00 [INF] Starting Loop Number 6/10 From Line 3
2018-10-05 08:41:26.891 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:26.921 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:26.936 +03:00 [INF] six
2018-10-05 08:41:26.953 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:27.609 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:29.635 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:29.650 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:29.650 +03:00 [INF] Starting Loop Number 7/10 From Line 3
2018-10-05 08:41:29.650 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:29.666 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:29.681 +03:00 [INF] seven
2018-10-05 08:41:29.681 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:30.327 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:32.354 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:32.370 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:32.370 +03:00 [INF] Starting Loop Number 8/10 From Line 3
2018-10-05 08:41:32.370 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:32.401 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:32.416 +03:00 [INF] eight
2018-10-05 08:41:32.432 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:33.078 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:35.135 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:35.151 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:35.151 +03:00 [INF] Starting Loop Number 9/10 From Line 3
2018-10-05 08:41:35.151 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:35.166 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:35.182 +03:00 [INF] nine
2018-10-05 08:41:35.182 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:35.854 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:37.870 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:37.886 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:37.886 +03:00 [INF] Starting Loop Number 10/10 From Line 3
2018-10-05 08:41:37.886 +03:00 [INF] Running Line 4: Set Variable [Apply '[splitted]' to Variable 'current']
2018-10-05 08:41:37.917 +03:00 [INF] Running Line 5: Log Data [Write Log to 'taskt\Logs\taskt Engine Logs.txt']
2018-10-05 08:41:37.940 +03:00 [INF] ten
2018-10-05 08:41:37.957 +03:00 [INF] Running Line 6: Send Keystrokes [Send 'one{ENTER}' to 'Current Window']
2018-10-05 08:41:38.544 +03:00 [INF] Running Line 7: Pause Script [Wait for 2000ms]
2018-10-05 08:41:40.578 +03:00 [INF] Running Line 8: End Loop
2018-10-05 08:41:40.593 +03:00 [INF] Finished Loop From Line 3
2018-10-05 08:41:40.593 +03:00 [INF] Result Code: Successful
2018-10-05 08:41:40.593 +03:00 [INF] Error: None

And result:
image

UI Automation can't automate with CurrentWindow

Hi @saucepleez . I'll try your new command UI Automation )
I select Click Element, then select Current Window, then click record and place attributes
When i go script i have an error:

2018-10-11 15:03:35.440 +03:00 [INF] Running Line 64: UI Automation [Left Click element in window 'Current Window']
2018-10-11 15:03:35.799 +03:00 [INF] Error Occured at Line 64:System.Exception: Window named 'Current Window' was not found!
   в taskt.Core.AutomationCommands.UIAutomationCommand.RunCommand(Object sender) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 2353
   в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 210

DLL Explorer should fill in the command

When UI selections are made in the DLL Explorer form, the form should present an option to use those settings in the currently opened command. Currently, you have to copy and paste the commands manually.

Error in running task with excel process

Hello Jason
I make this one short.
Version 1.8.2.0 works as it should be when running tasks when working with excel and naming it default.
I can run it again and again without getting any errors at all.

But with version 2.0.0.1 i get errors when running it more than once.

And why is your "Dropbox" mentioned in the code.

I would really like to make use of taskt in production related work. But it is not stable yet.
Your version 1.8.2.0 works really good and i will stick to this. Until you got a more stable update.
Hope the info helped.

2018-10-26 08:08:09.293 +02:00 [INF] Engine Class has been initialized
2018-10-26 08:08:09.362 +02:00 [INF] Client requesting to execute script using frmEngine
2018-10-26 08:08:09.379 +02:00 [INF] Script Path: c:\taskt\My Scripts\Sample Scripts\Excel Activate Sheet Test.xml
2018-10-26 08:08:09.393 +02:00 [INF] Bot Engine Started: 26-10-2018 08:08:09
2018-10-26 08:08:09.408 +02:00 [INF] Deserializing File
2018-10-26 08:08:09.428 +02:00 [INF] Creating Variable List
2018-10-26 08:08:09.442 +02:00 [INF] Creating App Instance Tracking List
2018-10-26 08:08:09.457 +02:00 [INF] Running Line 1: Create Excel Application [Instance Name: 'default']
2018-10-26 08:08:10.504 +02:00 [INF] Running Line 2: Open Workbook [Open from 'c:\excel\test.xlsx', Instance Name: 'default']
2018-10-26 08:08:11.845 +02:00 [INF] Running Line 3: Activate Sheet [Sheet Name: Sheet1, Instance Name: 'default']
2018-10-26 08:08:12.115 +02:00 [INF] Result Code: Successful
2018-10-26 08:08:12.128 +02:00 [INF] Error: None
2018-10-26 08:08:24.324 +02:00 [INF] Engine Class has been initialized
2018-10-26 08:08:24.419 +02:00 [INF] Client requesting to execute script using frmEngine
2018-10-26 08:08:24.433 +02:00 [INF] Script Path: c:\My Scripts\Sample Scripts\Excel Activate Sheet Test.xml
2018-10-26 08:08:24.449 +02:00 [INF] Bot Engine Started: 26-10-2018 08:08:24
2018-10-26 08:08:24.465 +02:00 [INF] Deserializing File
2018-10-26 08:08:24.486 +02:00 [INF] Creating Variable List
2018-10-26 08:08:24.504 +02:00 [INF] Creating App Instance Tracking List
2018-10-26 08:08:24.522 +02:00 [INF] Running Line 1: Create Excel Application [Instance Name: 'default']
2018-10-26 08:08:25.561 +02:00 [INF] Result Code: Error
2018-10-26 08:08:25.574 +02:00 [INF] Error: System.Exception: System.Exception:

You cannot share application instance names. Ensure that Instance ID being used are unique.

at taskt.Core.AutomationCommands.ExcelCreateApplicationCommand.RunCommand(Object sender) in

D:\Dropbox\Environment Folders\Documents\Visual Studio 2015\Projects\taskt\taskt\Core\AutomationCommands

.cs:line 3305
at taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) in D:\Dropbox\Environment Folders\Documents\Visual Studio 2015\Projects\taskt\taskt\Core\AutomationEngine.cs:line 212
at taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) in D:\Dropbox\Environment Folders\Documents\Visual Studio 2015\Projects\taskt\taskt\Core\AutomationEngine.cs:line 239
at taskt.Core.AutomationEngineInstance.ExecuteScript(String filePath) in

D:\Dropbox\Environment Folders\Documents\Visual Studio 2015\Projects\taskt\taskt\Core\

AutomationEngine.cs:line

Error in UI Automation and Click UI Item

Hi @saucepleez. Yesterday i'll check my script in last dev-branch version and have error:
2018-10-26 08:49:42.785 +03:00 [INF] Running Line 26: Click UI Item [Perform Left Click on 'Физические лица' in Window '[Env.ActiveWindowTitle]'] 2018-10-26 08:49:43.719 +03:00 [INF] Result Code: Error 2018-10-26 08:49:43.719 +03:00 [INF] Error: System.Exception: System.FormatException: Входная строка имела неверный формат. в System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) в System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) в System.Int32.Parse(String s) в taskt.Core.AutomationCommands.SendMouseMoveCommand.RunCommand(Object sender) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 2278 в taskt.Core.AutomationCommands.ThickAppClickItemCommand.RunCommand(Object sender) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 2459 в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 225 в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 246 в taskt.Core.AutomationEngineInstance.ExecuteScript(String filePath) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 110

Then i'll try this action by UI Automation and have similar error:
2018-10-26 08:56:29.883 +03:00 [INF] Running Line 28: UI Automation [Left Click element in window 'Current Window'] 2018-10-26 08:56:30.665 +03:00 [INF] Result Code: Error 2018-10-26 08:56:30.665 +03:00 [INF] Error: System.Exception: System.FormatException: Входная строка имела неверный формат. в System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) в System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) в System.Int32.Parse(String s) в taskt.Core.AutomationCommands.SendMouseMoveCommand.RunCommand(Object sender) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 2278 в taskt.Core.AutomationCommands.UIAutomationCommand.RunCommand(Object sender) в C:\src\taskt\taskt\Core\AutomationCommands.cs:строка 2808 в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 225 в taskt.Core.AutomationEngineInstance.ExecuteCommand(ScriptAction command) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 246 в taskt.Core.AutomationEngineInstance.ExecuteScript(String filePath) в C:\src\taskt\taskt\Core\AutomationEngine.cs:строка 110

At first i think that problem in complex window name:
Here it:

ТАНАИС / Рубцов Валерий / Управление небольшой фирмой, редакция 1.5 + CRM, редакция 2.0 (1.5.4.34/2.0.9.6). Разработано совместно с "1С-Рарус" тел: +7 (495) 231-20-02 [email protected] www.rarus.ru

But earler similar command works good in same windows name.

This commands and whole script works great in 1.9.3.0

Returning an according text by number or added to one string

Found a malfunction:
every command, I am trying to get the data, returns the first according value, but not the others.
Examples:
I try Element Action to get text from field found by CSS Selector. I use some selector that will find a lot of fields(as "div.parametrs .registerBox" where registerBox is a class of more than one element on page), but all I got is contents of the first .registerBox element and... that's all.
Okay, I set the selector to get the parent element text("div.parametrs") and get string, containing my information. But when I am trying to use the RegEx Extraction to get exactly those strings that I need at last, it gives me the good result in first iteration(I increase the Select Matching Group Index attribute in every loop) and empty in the others.
Please could you help me - show the working regex string or repair that bug?

Excel operations like in Workfusion

Hello saucepleez about excel looping and lists functionalities. i would recommend just for the curiosity to look at : https://www.workfusion.com/rpa-express/. I think that the Taskt is much more faster and better performance than WorkFusion. Take a look at the specific excel operations in workfusion. (Those we need) and also variable types.

Json Parse Command

Add Command that parses json and allows looping like a list.

Take sample JSON:

{ 'Stores': [ 'Lambton Quay', 'Willis Street' ], 'Manufacturers': [ { 'Name': 'Acme Co', 'Products': [ { 'Name': 'Anvil', 'Price': 50 } ] }, { 'Name': 'Contoso', 'Products': [ { 'Name': 'Elbow Grease', 'Price': 99.95 }, { 'Name': 'Headlight Fluid', 'Price': 4 } ] } ] }

User can specify something like $..Products[?(@.Price >= 50)].Name to get all items above 50 dollars price and loop each item found.

Show user line number of script command

@saucepleez i think, it will be useful to have line numbers of script. I explain. When i write scitpt over 30-40 commands, if i have error in script, i read the log, receive error line and then i need to find it in my script.
Another option. When scirpt starts we see the orange line that running around the script commands, but if my script don't shrink the window, i can't see this line sometimes. It will be great if you can stay oragne line at the middle of the window...

Indexed working elements and lists

Hello. Could you add a variable support for fields Element Search Parameter in Element Action? To access those elements depending on variables set before?
And is there any way to get the list content outside of Loop List command? Can I take the value by index?

Posibility to find and iteract GUI element by class, type and other

Recently i using [https://github.com/Roemer/FlaUI] to automate GUI applications, there we can specify some criteries to find GUI elements. For example, i have applications witch elements have the same names and different ControlType...

Other side - using [https://github.com/2gis/Winium.Desktop] - they try to do all automation by selenium style.
Look here:
image
And here:
image

I'll say right away, that i can't work with AutomationID becose it is changing after each start of application.

REST Service Endpoint Requests

Enable the ability to call and consume a REST Service. User will need to specify the parameters:

URI - "somehost.com"
Resource - "/api/getdata"
Parameters - "name: value"
Headers - "bearer: token"
Method - "POST, GET"
Apply To Variable - vResult

Resume Selenium Option

taskt should provide the option to resume control of an existing Selenium instance from a new script. Selenium Name -> Instance ID should be tracked instead of the actual Selenium Object.

Identified by @msshubin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.