├── requirements.txt ├── .gitignore ├── .github ├── FUNDING.yml └── assets │ └── Auto-StockTrader-Banner.jpeg ├── src ├── Selenium-IDE.crx ├── Helper_Scripts │ ├── SoFi_Account_Array.js │ ├── README.MD │ ├── RSA-QuickStart.sh │ ├── Fidelity_Account_Array.js │ └── RSA-QuickStart.bat ├── README.MD └── Selenium_IDE │ ├── Sofi Helper.side │ ├── Firstrade_Auto.side │ ├── Account_Management_Tools.side │ ├── Fidelity_Auto.side │ ├── Merrill_Auto.side │ └── Schwab_Auto.side ├── LICENSE ├── .env.example ├── main.py └── README.md /requirements.txt: -------------------------------------------------------------------------------- 1 | python-dotenv -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .env 3 | test* 4 | Master*.side 5 | Ticker*.side -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [Prem-ium] 2 | custom: https://www.buymeacoffee.com/prem.ium 3 | -------------------------------------------------------------------------------- /src/Selenium-IDE.crx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Prem-ium/Auto-StockTrader/HEAD/src/Selenium-IDE.crx -------------------------------------------------------------------------------- /.github/assets/Auto-StockTrader-Banner.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Prem-ium/Auto-StockTrader/HEAD/.github/assets/Auto-StockTrader-Banner.jpeg -------------------------------------------------------------------------------- /src/Helper_Scripts/SoFi_Account_Array.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | Login to Sofi's Invest Homepage on your browser and run this script in the console. 4 | */ 5 | const accountNumbers = []; 6 | const links = document.getElementsByTagName("a"); 7 | for (let i = 0; i < links.length; i++) { 8 | const href = links[i].getAttribute("href"); 9 | if (href && href.includes("account/") && !href.includes("/wealth/app/")) { 10 | const accountNumber = href.replace("account/", ""); 11 | accountNumbers.push(accountNumber); 12 | } 13 | } 14 | console.log(accountNumbers); 15 | -------------------------------------------------------------------------------- /src/Helper_Scripts/README.MD: -------------------------------------------------------------------------------- 1 | # Helper Scripts 2 | 3 | This folder contains essential sub-scripts to facilitate your project tasks. 4 | 5 | ## Fidelity_Account_Array.js 6 | 7 | This script is designed to be executed within your browser's console to swiftly retrieve your Fidelity account numbers. 8 | 9 | ### Instructions: 10 | 11 | 1. Open Fidelity Portfolio. 12 | 2. Run this Script in the Console. 13 | 3. Copy the generated Array. 14 | 4. Paste it into the Fidelity environment variable in the `.env` file. 15 | 16 | ## SoFi_Account_Array.js 17 | 18 | Similar to `Fidelity_Account_Array.js`, this script facilitates the gathering of account information for Sofi. 19 | 20 | ### Instructions: 21 | 22 | 1. Log in to Sofi's Invest Homepage on your browser. 23 | 2. Execute this script in the console. 24 | -------------------------------------------------------------------------------- /src/Helper_Scripts/RSA-QuickStart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Set directory variable to the path of the project folder 3 | DIRECTORY= 4 | 5 | # Change to the project directory 6 | if [ -d "$DIRECTORY" ]; then 7 | cd "$DIRECTORY" || { echo "Failed to change directory to $DIRECTORY"; exit 1; } 8 | else 9 | echo "Directory $DIRECTORY does not exist." 10 | exit 1 11 | fi 12 | 13 | read -p "Enter the ticker symbol: " ticker 14 | 15 | # REPLACE THE PATH BELOW WITH YOUR OWN PATH TO THE PROJECT FOLDER 16 | cd /path/to/your/project 17 | 18 | python3 main.py $ticker 19 | 20 | # Examples of quickstarting with different browsers and profiles 21 | # Uncomment the lines below to enable them. 22 | 23 | # read -p "Do you want to open browsers? (y/n): " open_browsers 24 | # if [ "$open_browsers" == "y" ]; then 25 | # /path/to/msedge --profile-directory="Default" & 26 | # /path/to/brave --profile-directory="Default" & 27 | # /path/to/brave --profile-directory="Profile 1" & 28 | # fi 29 | 30 | sleep 15 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2023-Present, Prem Patel 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /src/Helper_Scripts/Fidelity_Account_Array.js: -------------------------------------------------------------------------------- 1 | // Instructions for Non-Technical Users: 2 | 3 | // 1. Login & Open Fidelity Portfolio Webpage (https://digital.fidelity.com/ftgw/digital/portfolio) 4 | 5 | // 2. Access the Browser's Developer Tools: 6 | // - If you're using Google Chrome or Microsoft Edge: Right-click anywhere on the webpage, then click "Inspect." 7 | // - If you're using Mozilla Firefox: Right-click anywhere on the webpage, then select "Inspect Element." 8 | 9 | // 3. Copy and Paste the Script: 10 | // - In the Developer Tools panel, find the "Console" tab or section. 11 | // - Copy the entire script 12 | // - Paste the script into the space in the Console. 13 | 14 | // 4. Run the Script: 15 | // - After pasting the script, press "Enter" on your keyboard. The script will execute, and you'll see numbers in the Console. 16 | 17 | // 5. Copy the Numbers: 18 | // - Select all the numbers in the Console by clicking and dragging your mouse cursor. 19 | // - Right-click on the selected numbers and choose "Copy." 20 | 21 | // 6. Paste the Numbers into .env file: 22 | // - Open the ".env" file using a text editor like Visual Studio Code, Notepad or TextEdit. 23 | // - Paste copied array intot he Fidelity_AI env variable 24 | // - Save the ".env" file. 25 | 26 | // You can also use the Fidelity side project login test, with index of 1, to obtain the account numbers. 27 | 28 | // Get all elements with the class name "acct-selector__acct-num" 29 | const elements = document.getElementsByClassName("acct-selector__acct-num"); 30 | 31 | // Create an array to store the text content 32 | const textArray = []; 33 | 34 | // Iterate through the elements and store the trimmed text content in the array 35 | for (let i = 0; i < elements.length; i++) { 36 | const text = elements[i].textContent.trim(); 37 | textArray.push(text); 38 | } 39 | 40 | // Print the array 41 | console.log(textArray); 42 | -------------------------------------------------------------------------------- /src/Helper_Scripts/RSA-QuickStart.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | 4 | REM set directory variable to the path of the project folder 5 | set directory= 6 | 7 | REM Display examples of usage 8 | echo 1. Pass a Stock Ticker as an argument to update all .side files: 9 | echo Enter: AAPL 10 | echo. 11 | echo 2. Separate multiple tickers with commas: 12 | echo Enter: NVDA,TSLA,AAPL 13 | echo. 14 | 15 | set /p arguments=Enter tickers (comma-separated): 16 | 17 | REM Navigate to the project folder using the directory variable 18 | cd %directory% 19 | 20 | python main.py %arguments% 21 | 22 | choice /c yn /n /m "Do you want to open browsers? (y/n): " /t 10 /d n 23 | set open_browsers=%errorlevel% 24 | 25 | if %open_browsers%==1 ( 26 | echo Attempting to open browsers... 27 | 28 | REM Attempt to open Brave Browser 29 | if exist "%ProgramFiles%\BraveSoftware\Brave-Browser\Application\brave.exe" ( 30 | echo Opening Brave... 31 | start "" "%ProgramFiles%\BraveSoftware\Brave-Browser\Application\brave.exe" --new-window --app="chrome-extension://mooikfkahbdckldjjndioackbalphokd/index.html" 32 | ) else if exist "%ProgramFiles(x86)%\BraveSoftware\Brave-Browser\Application\brave.exe" ( 33 | echo Opening Brave... 34 | start "" "%ProgramFiles(x86)%\BraveSoftware\Brave-Browser\Application\brave.exe" --new-window --app="chrome-extension://mooikfkahbdckldjjndioackbalphokd/index.html" 35 | ) else if exist "%LocalAppData%\BraveSoftware\Brave-Browser\Application\brave.exe" ( 36 | echo Opening Brave... 37 | start "" "%LocalAppData%\BraveSoftware\Brave-Browser\Application\brave.exe" --new-window --app="chrome-extension://mooikfkahbdckldjjndioackbalphokd/index.html" 38 | ) else ( 39 | echo Brave not found. 40 | ) 41 | 42 | REM Attempt to open Microsoft Edge 43 | if exist "%ProgramFiles%\Microsoft\Edge\Application\msedge.exe" ( 44 | echo Opening Edge... 45 | start "" "%ProgramFiles%\Microsoft\Edge\Application\msedge.exe" --app="chrome-extension://ajdpfmkffanmkhejnopjppegokpogffp/index.html" 46 | ) else if exist "%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" ( 47 | echo Opening Edge... 48 | start "" "%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" --app="chrome-extension://ajdpfmkffanmkhejnopjppegokpogffp/index.html" 49 | ) else if exist "%LocalAppData%\Microsoft\Edge\Application\msedge.exe" ( 50 | echo Opening Edge... 51 | start "" "%LocalAppData%\Microsoft\Edge\Application\msedge.exe" --app="chrome-extension://ajdpfmkffanmkhejnopjppegokpogffp/index.html" 52 | ) else ( 53 | echo Edge not found. 54 | ) 55 | echo Finished attempting to open browsers. 56 | ) else ( 57 | echo Browsers will not be opened. 58 | ) 59 | 60 | timeout /t 3 /nobreak >nul 61 | endlocal -------------------------------------------------------------------------------- /src/README.MD: -------------------------------------------------------------------------------- 1 | # 📈 Additional Help: Automating Stock Trades with Selenium IDE 2 | 3 | This guide explains how to retrieve the sensitive account information required for automation and how to correctly configure your `.env` file using the format provided in `env.example`. 4 | 5 | > 💎 For a seamless experience without manual configuration for Chase/Fidelity/Ally, [consider becoming a **Gold Sponsor**](https://github.com/sponsors/Prem-ium) to unlock premium features and ready-to-run scripts. 6 | 7 | --- 8 | 9 | ## 🏦 Chase Automation 10 | 11 | Automate trades on **J.P. Morgan Self-Directed Investing** using the `Chase_Auto.side` file and the Selenium IDE extension. 12 | 13 | ### 🔍 Retrieve Account Identifiers 14 | 15 | 1. Navigate to the Chase [Trade Stocks page](https://secure07ea.chase.com/web/auth/dashboard#/dashboard/trade/equity/entry). 16 | 2. Select your account from the dropdown. 17 | 3. Copy the **AI number** from the URL. It will look like this: 18 | 19 | ``` 20 | https://secure07ea.chase.com/web/auth/dashboard#/dashboard/trade/equity/entry;ai={YOUR_AI_HERE};sym= 21 | ``` 22 | 23 | ![Chase AI Example](https://user-images.githubusercontent.com/80719066/216079858-746af166-8387-41ad-9564-dd0c6285eb39.png) 24 | 25 | ### 🧪 Update Test Cases in Selenium IDE 26 | 27 | Replace the `return` statement in each Buy/Sell test case: 28 | 29 | ```javascript 30 | return [['54658965', 'YOUR', 'AI', 'GOES', 'HERE'], ['YOUR', 'AI', 'for-another-login', 'GOES', 'HERE']] 31 | ``` 32 | 33 | ### 💹 Provide Stock Ticker 34 | 35 | Add your stock ticker as a `return` statement: 36 | 37 | ```javascript 38 | return "STOCK_TICKER" 39 | ``` 40 | 41 | Start the test to execute the trade. 42 | 43 | --- 44 | 45 | ## 📊 Fidelity Automation 46 | 47 | 1. Log in to [Fidelity Portfolio](https://digital.fidelity.com/ftgw/digital/portfolio). 48 | 2. Open Developer Tools: 49 | 50 | * **Chrome/Edge**: Right-click → Inspect 51 | * **Firefox**: Right-click → Inspect Element 52 | 3. Copy and paste the [Fidelity Account Array Script](https://github.com/Prem-ium/Auto-StockTrader/blob/main/src/Helper_JS_Scripts/Fidelity_Account_Array.js) into the **Console** tab. 53 | 4. Press **Enter** to run the script. It will output account numbers. 54 | 5. Copy the resulting array. 55 | 6. Paste it into the `.env` file under: 56 | 57 | ```env 58 | FIDELITY_AI=["12345678", "23456789"] 59 | ``` 60 | 61 | > 🧪 Tip: You can also run the Fidelity login test in the `.side` file (index `1`) to retrieve account IDs. 62 | 63 | --- 64 | 65 | ## 📈 Ally Invest Automation 66 | 67 | 1. On the [Ally Invest Settings Page](https://live.invest.ally.com/settings), change default orders to a low-risk penny stock (e.g., Quantity: 1, Order Type: Market). 68 | 2. Install and open the **Selenium IDE** browser extension. 69 | 3. Log in to **Ally**, **Vanguard**, or **Firstrade** in your browser. 70 | 4. Add account numbers to the test script: 71 | 72 | ```javascript 73 | return ["54566343", "34546546", "54566546"] 74 | ``` 75 | 76 | 5. Add the stock ticker and (optionally) a limit price: 77 | 78 | ```javascript 79 | return "TICKER" 80 | return "LIMIT_PRICE" 81 | ``` 82 | 83 | 6. Start the test to run automation. 84 | 85 | ![Ally Example](https://user-images.githubusercontent.com/80719066/216331460-00897c0e-1e21-4413-ac81-1931fe906de0.png) -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # main.py Selenium IDE .side config 2 | 3 | # Number of Schwab Accounts 4 | # Type: Integer 5 | # Example: SCHWAB_AI=20 6 | SCHWAB_AI= 7 | 8 | # Number of Merrill Accounts 9 | # Type:Integer 10 | # Example: MERRILL_AI = 4 11 | MERRILL_AI= 12 | 13 | # Number of Robinhood Accounts (Gold Sponsor Early Access Only) 14 | # Type: Integer 15 | # Example: ROBINHOOD_AI=20 16 | ROBINHOOD_AI= 17 | 18 | # Number of WELLSTRADE Accounts (Gold Sponsor Exclusive) 19 | # Type: Integer 20 | # Example: WELLSTRADE_AI=20 21 | WELLSTRADE_AI= 22 | 23 | # Number of Vanguard Accounts 24 | # Type: Integer 25 | # Example: VANGUARD_AI = 4 26 | VANGUARD_AI= 27 | 28 | # List of account numbers for Fidelity Auto.side file 29 | # Type: Nested List of Strings 30 | # If you have one login, use this format: 31 | # Example: FIDELITY_AI=[['111111111','222222222','333333333']] 32 | # If you have multiple logins, use this format: 33 | # Example: FIDELITY_AI=[['111111111','222222222','333333333'],['444444444','555555555','666666666']] 34 | FIDELITY_AI=[['YOUR','ACCOUNT','NUMBERS','HERE'],['ANOTHER','ACCOUNT','HERE']]; 35 | 36 | # Account ID for Chase Auto.side file 37 | # Type: Nested List of Strings 38 | # If you have one login, use this format: 39 | # Example: CHASE_AI="[['1234567890','34554654']]" 40 | # If you have multiple logins, use this format: 41 | # Example: CHASE_AI="[['1234567890','34554654'], ['1234567890','34554654']]" 42 | # (Retrieve the number at {YOUR_AI_HERE}): `https://secure07ea.chase.com/web/auth/dashboard#/dashboard/trade/equity/entry;ai={YOUR_AI_HERE};sym=`) 43 | # Photo Example: https://user-images.githubusercontent.com/80719066/216079858-746af166-8387-41ad-9564-dd0c6285eb39.png 44 | CHASE_AI=[['YOUR','ACCOUNT','NUMBERS','HERE'],['ANOTHER','ACCOUNT','HERE']] 45 | 46 | # List of account names for Ally Auto.side file 47 | # Type: List of Strings 48 | # Example: ALLY_AI="['Account Name 1','Account Name 2']" 49 | # WARNING: In [Ally Invest Settings Webpage](https://live.invest.ally.com/settings), change the default orders on the settings 50 | # for all accounts to be a small penny stock for default stock ticker to miminize risk, Market, & Quantity: 1. 51 | ALLY_AI="['YOUR','ACCOUNT','NAMES','HERE']" 52 | 53 | # List of account numbers for Firstrade Auto.side file 54 | # Type: List of Strings 55 | # Example: FIRSTRADE_AI="['1234567890']" 56 | FIRSTRADE_AI="['YOUR','ACCOUNT','NUMBERS','HERE']" 57 | 58 | # Path to the folder where you want to store the .side files 59 | # Type: String 60 | # Example: CUSTOM_DIR='C:\Users\Premium\Desktop\CodingProjects\SeleniumFolder' 61 | CUSTOM_DIR='C:\Users\Premium\Desktop\CodingProjects\SeleniumFolder' 62 | 63 | # Dynamic Account Number 64 | # Type: Int 65 | # Default: 0 66 | DYNAMIC=1 67 | 68 | # Sofi Invest (Archived) 69 | 70 | # Selenium Extension 71 | # List of account numbers for Sofi Helper Auto.side file 72 | # Type: List of Strings 73 | # Example: SOFI_AI="['1354546','2657657']" 74 | SOFI_AI="['YOUR','ACCOUNT','NUMBERS','HERE']" 75 | 76 | # Account Credentials Seperated by ':' 77 | # Type: String 78 | # Used to attempt to enter credentials, or login where possible. Beta feature. Still in development. 79 | CHASE_LOGIN="USERNAME:PASSWORD" 80 | FIDELITY_LOGIN="USERNAME:PASSWORD" 81 | FIRSTADE_LOGIN="USERNAME:PASSWORD" 82 | MERRILL_LOGIN="USERNAME:PASSWORD" 83 | SCHWAB_LOGIN="USERNAME:PASSWORD" 84 | ALLY_LOGIN="USERNAME:PASSWORD" 85 | VANGUARD_LOGIN="USERNAME:PASSWORD" 86 | -------------------------------------------------------------------------------- /src/Selenium_IDE/Sofi Helper.side: -------------------------------------------------------------------------------- 1 | { 2 | "id": "3754741b-c246-46fd-a4b9-61df42906362", 3 | "version": "2.0", 4 | "name": "Sofi Helper", 5 | "url": "https://www.sofi.com/wealth/", 6 | "tests": [{ 7 | "id": "00fe9fca-2260-4ca5-beee-945eb08cc90k", 8 | "name": "Sofi", 9 | "commands": [{ 10 | "id": "431f11b5-635e-458b-8360-9531d5f5dbe5", 11 | "comment": "", 12 | "command": "store", 13 | "target": "ARVL", 14 | "targets": [], 15 | "value": "TICKER" 16 | }, { 17 | "id": "b6ca055f-d2c7-4f83-a187-43da6ecaa44e", 18 | "comment": "", 19 | "command": "executeScript", 20 | "target": "return ['YOUR_ACCOUNTS','HERE'];", 21 | "targets": [], 22 | "value": "accounts" 23 | }, { 24 | "id": "4956efa5-c445-44f1-9771-90e6c188c228", 25 | "comment": "", 26 | "command": "executeScript", 27 | "target": "return \"UR_ACCT_HERE\";", 28 | "targets": [], 29 | "value": "target" 30 | }, { 31 | "id": "bd5bd04d-d462-4410-ab73-b95013e7b1b8", 32 | "comment": "", 33 | "command": "store", 34 | "target": "0.13", 35 | "targets": [], 36 | "value": "LIMIT" 37 | }, { 38 | "id": "7918963f-8a4d-4d44-bd16-9f6b38a6e7d2", 39 | "comment": "", 40 | "command": "executeScript", 41 | "target": "return \"Buy\"; ", 42 | "targets": [], 43 | "value": "TYPE" 44 | }, { 45 | "id": "c5dda49f-8168-4957-a5e4-f3be2a10ea2f", 46 | "comment": "", 47 | "command": "executeScript", 48 | "target": "let list = ${accounts}; list = list.slice(list.indexOf(${target}) + 1); return list;", 49 | "targets": [], 50 | "value": "numb" 51 | }, { 52 | "id": "260a9e1a-a82b-4d45-98dc-b9ca0fcf4860", 53 | "comment": "", 54 | "command": "forEach", 55 | "target": "numb", 56 | "targets": [], 57 | "value": "account" 58 | }, { 59 | "id": "6e8d053a-4fc4-4fdb-a70b-153dc04752be", 60 | "comment": "", 61 | "command": "open", 62 | "target": "https://www.sofi.com/wealth/app/account/${account}/stock/${TICKER}/${TYPE}", 63 | "targets": [], 64 | "value": "" 65 | }, { 66 | "id": "f464bd97-5ca1-4278-9e3c-0aaa296bde79", 67 | "comment": "", 68 | "command": "click", 69 | "target": "id=input-4", 70 | "targets": [ 71 | ["id=input-4", "id"], 72 | ["name=shares", "name"], 73 | ["css=#input-4", "css:finder"], 74 | ["xpath=//input[@id='input-4']", "xpath:attributes"], 75 | ["xpath=//div[@id='input-wrapper-5']/input", "xpath:idRelative"], 76 | ["xpath=//input", "xpath:position"] 77 | ], 78 | "value": "" 79 | }, { 80 | "id": "7410051f-d7d2-408c-9b08-2b18789573e2", 81 | "comment": "", 82 | "command": "type", 83 | "target": "id=input-4", 84 | "targets": [ 85 | ["id=input-4", "id"], 86 | ["name=shares", "name"], 87 | ["css=#input-4", "css:finder"], 88 | ["xpath=//input[@id='input-4']", "xpath:attributes"], 89 | ["xpath=//div[@id='input-wrapper-5']/input", "xpath:idRelative"], 90 | ["xpath=//input", "xpath:position"] 91 | ], 92 | "value": "${LIMIT}" 93 | }, { 94 | "id": "521619f8-7941-4889-b3e4-be56306e2ac9", 95 | "comment": "", 96 | "command": "click", 97 | "target": "id=input-1", 98 | "targets": [ 99 | ["id=input-1", "id"], 100 | ["name=value", "name"], 101 | ["css=#input-1", "css:finder"], 102 | ["xpath=//input[@id='input-1']", "xpath:attributes"], 103 | ["xpath=//main[@id='mainContent']/div/div[4]/div[2]/input", "xpath:idRelative"], 104 | ["xpath=//div[4]/div[2]/input", "xpath:position"] 105 | ], 106 | "value": "" 107 | }, { 108 | "id": "67a46219-b580-4986-84a2-ccadf12bdbd4", 109 | "comment": "", 110 | "command": "type", 111 | "target": "id=input-1", 112 | "targets": [], 113 | "value": "1" 114 | }, { 115 | "id": "6bab2c58-7aa2-44ae-b6a9-954d2e4c121a", 116 | "comment": "", 117 | "command": "click", 118 | "target": "xpath=//button[contains(.,'Review')]", 119 | "targets": [ 120 | ["css=.sc-hmjpVf", "css:finder"], 121 | ["xpath=(//button[@type='button'])[3]", "xpath:attributes"], 122 | ["xpath=//main[@id='mainContent']/div/div[6]/button", "xpath:idRelative"], 123 | ["xpath=//div[6]/button", "xpath:position"], 124 | ["xpath=//button[contains(.,'Review')]", "xpath:innerText"] 125 | ], 126 | "value": "" 127 | }, { 128 | "id": "aeb20f7d-b271-48dd-ac68-68e8642b9315", 129 | "comment": "", 130 | "command": "click", 131 | "target": "xpath=//button[contains(.,'Buy ${TICKER}')]", 132 | "targets": [ 133 | ["css=.sc-hmjpVf", "css:finder"], 134 | ["xpath=(//button[@type='button'])[2]", "xpath:attributes"], 135 | ["xpath=//main[@id='mainContent']/div/div[4]/button", "xpath:idRelative"], 136 | ["xpath=//div[4]/button", "xpath:position"], 137 | ["xpath=//button[contains(.,'Buy TRKA')]", "xpath:innerText"] 138 | ], 139 | "value": "" 140 | }, { 141 | "id": "0be328ba-62fb-4aa1-a491-e47dedb5f783", 142 | "comment": "", 143 | "command": "executeScript", 144 | "target": "const helper2 = document.getElementById(\"helper-2\"); if (helper2 && helper2.textContent.trim() === \"Choose your account\") { return true; } const wizardContainer = document.querySelector(\".WizardContainer-esGHbX\"); if (wizardContainer && wizardContainer.querySelector(\"h1\").textContent.includes(\"Review\")) { return true; }", 145 | "targets": [], 146 | "value": "result" 147 | }, { 148 | "id": "5dd5e797-3f53-4770-bca7-6c9a545683e0", 149 | "comment": "", 150 | "command": "while", 151 | "target": "${result} == true", 152 | "targets": [], 153 | "value": "" 154 | }, { 155 | "id": "880ba778-0fdd-4a33-997d-198df963c4f4", 156 | "comment": "", 157 | "command": "echo", 158 | "target": "${account} order has not been placed. Pausing for extra time.", 159 | "targets": [], 160 | "value": "" 161 | }, { 162 | "id": "f45bc24e-268a-4a2c-bede-c2535a5d740e", 163 | "comment": "", 164 | "command": "pause", 165 | "target": "2500", 166 | "targets": [], 167 | "value": "" 168 | }, { 169 | "id": "41616688-a5f4-4d75-97a8-a6d5f9de1765", 170 | "comment": "", 171 | "command": "executeScript", 172 | "target": "const helper2 = document.getElementById(\"helper-2\"); if (helper2 && helper2.textContent.trim() === \"Choose your account\") { return true; } const wizardContainer = document.querySelector(\".WizardContainer-esGHbX\"); if (wizardContainer && wizardContainer.querySelector(\"h1\").textContent.includes(\"Review\")) { return true; }", 173 | "targets": [], 174 | "value": "result" 175 | }, { 176 | "id": "407d2451-b83b-4feb-b5ea-f4d0ddc39f68", 177 | "comment": "", 178 | "command": "end", 179 | "target": "", 180 | "targets": [], 181 | "value": "" 182 | }, { 183 | "id": "886b65cc-c82c-4e20-8325-e26183aafe30", 184 | "comment": "", 185 | "command": "echo", 186 | "target": "${account} Buying/Selling ${TICKER} Helper Session Passed!", 187 | "targets": [], 188 | "value": "" 189 | }, { 190 | "id": "b3e5927c-02b5-42e6-a8eb-e080169a914c", 191 | "comment": "", 192 | "command": "end", 193 | "target": "", 194 | "targets": [], 195 | "value": "" 196 | }] 197 | }], 198 | "suites": [{ 199 | "id": "5c03e64a-0f9b-422a-b416-65be8986bacd", 200 | "name": "Default Suite", 201 | "persistSession": false, 202 | "parallel": false, 203 | "timeout": 300, 204 | "tests": [] 205 | }], 206 | "urls": ["https://www.sofi.com/wealth/"], 207 | "plugins": [] 208 | } -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # BSD 3-Clause License 2 | # 3 | # Copyright (c) 2023-Present, Prem Patel 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # 1. Redistributions of source code must retain the above copyright notice, this 9 | # list of conditions and the following disclaimer. 10 | # 11 | # 2. Redistributions in binary form must reproduce the above copyright notice, 12 | # this list of conditions and the following disclaimer in the documentation 13 | # and/or other materials provided with the distribution. 14 | # 15 | # 3. Neither the name of the copyright holder nor the names of its 16 | # contributors may be used to endorse or promote products derived from 17 | # this software without specific prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | import os 31 | import json 32 | import sys 33 | import argparse 34 | import shutil 35 | import traceback 36 | import subprocess 37 | 38 | from dotenv import load_dotenv 39 | 40 | load_dotenv() 41 | parser = argparse.ArgumentParser(description="Process stock trading arguments.") 42 | parser.add_argument("tickers", nargs='?', default="JOB", help="Tickers to process") 43 | 44 | args = parser.parse_args() 45 | 46 | def main(): 47 | TICKERS = args.tickers.upper() 48 | if "," in TICKERS: print(f"{'-'*100}\nTICKERS passed:\t{TICKERS}\n{'-'*40}") 49 | 50 | file_task_map = { 51 | "CHASE_AI": {"file": os.path.join("src", "Selenium_IDE", "Chase_Auto.side"), "task": ""}, 52 | "FIRSTRADE_AI": {"file": os.path.join("src", "Selenium_IDE", "Firstrade_Auto.side"), "task": ""}, 53 | "VANGUARD_AI": {"file": os.path.join("src", "Selenium_IDE", "Vanguard_Auto.side"), "task": ""}, 54 | "FIDELITY_AI": {"file": os.path.join("src", "Selenium_IDE", "Fidelity_Auto.side"), "task": ""}, 55 | "SCHWAB_AI": {"file": os.path.join("src", "Selenium_IDE", "Schwab_Auto.side"), "task": ""}, 56 | "SOFI_AI": {"file": os.path.join("src","Selenium_IDE","Sofi Helper.side"), "task": ""}, 57 | "ALLY_AI": {"file": os.path.join("src", "Selenium_IDE", "Ally_Auto.side"), "task": ""}, 58 | "MERRILL_AI": {"file": os.path.join("src", "Selenium_IDE", "Merrill_Auto.side"), "task": ""}, 59 | } 60 | custom_dir = os.environ.get("CUSTOM_DIR", os.path.join(os.path.expanduser('~'), 'Desktop', 'AutoStockTrader')) 61 | os.makedirs(custom_dir, exist_ok=True) 62 | 63 | files = [] 64 | logins = [] 65 | result = subprocess.run(['git', 'pull'], capture_output=True, text=True) 66 | if 'Your local changes to the following files would be overwritten by merge' in result.stderr: 67 | subprocess.run(['git', 'reset', '--hard'], check=True) 68 | result = subprocess.run(['git', 'pull'], capture_output=False, text=False) 69 | if custom_dir: 70 | dest_path = os.path.join(custom_dir, "Account_Management_Tools.side") 71 | try: shutil.copyfile(os.path.join("src", "Selenium_IDE", "Account_Management_Tools.side"), dest_path) 72 | except shutil.SameFileError: pass 73 | print('-'*105) 74 | for var_name, info in file_task_map.items(): 75 | if os.environ.get(var_name): 76 | files.append(info["file"]) 77 | print(f"{var_name} is enabled.") 78 | 79 | if var_name == "SCHWAB_AI": 80 | info["task"] = "Array.from({length: " + os.environ[var_name] + "}, (_, i) => i);" 81 | elif var_name == "MERRILL_AI" or var_name == "VANGUARD_AI": 82 | info["task"] = "Array.from({length: " +os.environ[var_name] + "}, (_, i) => i + 1);" 83 | else: 84 | info["task"] = os.environ[var_name].replace(" ", "") 85 | 86 | try: 87 | logins.append(os.environ[var_name.split("_")[0] + "_LOGIN"]) 88 | except: 89 | logins.append("LOGIN:HERE") 90 | else: 91 | print(f"{var_name} is disabled. Skipping...") 92 | 93 | print(f'\n{"-"*105}\n') 94 | for filePath in files: 95 | task = "" 96 | for var_name, info in file_task_map.items(): 97 | if info["file"].lower() in filePath.lower(): 98 | task = info["task"] 99 | break 100 | 101 | # Load the JSON data 102 | with open(filePath, 'r') as file: 103 | data = json.load(file) 104 | 105 | for test in data['tests']: 106 | for command in test['commands']: 107 | # Store Login information, if provided 108 | if command['command'] == 'store' and 'LOGIN' in command['value']: 109 | command['target'] = logins.pop(0) 110 | 111 | # Update Ticker, if provided 112 | if TICKERS is not None and command['value'] == 'TICKER': 113 | command['target'] = f"return '{TICKERS}'" if command['command'] == 'executeScript' else TICKERS 114 | if command['command'] == 'store' and command['value'] == 'dynamic': 115 | command['target'] = os.environ.get("DYNAMIC", 0) 116 | # Update the account number(s) and break to next test 117 | if command['command'] == 'executeScript' and command['value'] == 'accounts': 118 | command['target'] = f"return {task}" 119 | break 120 | 121 | if os.name == 'nt': 122 | filePath = filePath.replace("src\\Selenium_IDE\\", "") 123 | filePath = filePath.replace("src\\X_Archive\\", "") 124 | filePath = f'{custom_dir}/{filePath}' if custom_dir else f'ENV-{filePath}' 125 | elif os.name == 'posix': 126 | filePath = os.path.join("src", "Selenium_IDE", filePath.replace("src/Selenium_IDE/", "")) 127 | filePath = os.path.join("src", "X_Archive", filePath.replace("src/X_Archive/", "")) 128 | filePath = os.path.join(custom_dir, filePath) if custom_dir else f'ENV-{filePath}' 129 | 130 | # Create a new file with the updated data 131 | with open(filePath, 'w') as file: 132 | json.dump(data, file, indent=2) 133 | 134 | print(f"Created/Updated:\t{filePath}!") 135 | 136 | if custom_dir and len(sys.argv) != 2: 137 | os.startfile(custom_dir) 138 | 139 | try: 140 | directory = os.path.dirname(os.path.abspath(__file__)) 141 | is_windows = os.name == 'nt' 142 | desktop_path = os.path.join(os.environ['USERPROFILE'], 'Desktop', 'RSA-QuickStart.bat') if is_windows else os.path.join(os.path.expanduser('~'), 'Desktop', 'RSA-QuickStart.sh') 143 | source_path = os.path.join(directory, 'src', 'Helper_Scripts', 'RSA-QuickStart.bat') if is_windows else os.path.join(directory, 'src', 'Helper_Scripts', 'RSA-QuickStart.sh') 144 | 145 | shutil.copyfile(source_path, desktop_path) 146 | print(f"Created/Updated:\t{desktop_path}") 147 | 148 | with open(desktop_path, 'r') as file: 149 | content = file.read() 150 | content = content.replace('set directory=', f'set directory={directory}') if is_windows else content.replace('export DIRECTORY=', f'export DIRECTORY={directory}') 151 | with open(desktop_path, 'w') as file: 152 | file.write(content) 153 | except FileNotFoundError: 154 | print(f'Encountered File Not Found Error: {traceback.format_exc()}\n') 155 | return 156 | except Exception as e: 157 | print(f"An unexpected error occurred: {e}") 158 | traceback.print_exc() 159 | return 160 | 161 | 162 | if __name__ == "__main__": 163 | print(f""" 164 | ========================================================================================================= 165 | Script Execution Starting... 166 | --------------------------------------------------------------------------------------------------------- 167 | Free Public Version - Limited Features/Support 168 | (C) Prem-ium 169 | --------------------------------------------------------------------------------------------------------- 170 | Upgrading to Gold Sponsorship unlocks exclusive features, including: 171 | - Faster, reliable Python/Selenium IDE scripts with consolidated brokerage automation. 172 | - Seamless automation with automated limit prices and account retrieval. 173 | - Exclusive setup and customization options via .env and command line arguments. 174 | - Automated cash transfer/withdrawal tools for Fidelity, Chase, and more. 175 | - WellsTrade & Robinhood automation support. 176 | 177 | Join: https://github.com/login?return_to=%2Fsponsors%2FPrem-ium%2Fsponsorships%3Ftier_id%3D308205 178 | 179 | --------------------------------------------------------------------------------------------------------- 180 | Related: Check out my new project, TaxMerge. A powerful app that consolidates multiple 1099-PDF tax forms 181 | into a single CSV file. This tool is designed to simplify the process of tax reporting for stock traders 182 | with multiple brokerage accounts. 183 | Check it out here: https://github.com/Prem-ium/Tax-Merge 184 | --------------------------------------------------------------------------------------------------------- 185 | Thank you for your support! 186 | =========================================================================================================\n\n\n""") 187 | main() 188 | 189 | 190 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

⚙️ Auto Stock Trader 💵

2 | 3 |

An awesome repository containing scripts and projects for automating stock orders across multiple brokerages.

4 | 5 |

6 | Github Sponsor

7 |

8 | Auto Stock Trader Banner 9 |

10 | 11 | --- 12 | ## Features 🚀 13 | 14 | - **Multi-Ticker Support**: Trade multiple stock tickers like `NVDA, TSLA, AAPL` all in one swift test run! 📈 15 | - **Multi-Account Login**: Effortlessly manage and trade across multiple accounts with seamless login automation 🔑 16 | - **Smart Error Handling**: Dynamic error checking & handling with XPATHs ensures your trades run smoothly and without hiccups ⚙️ 17 | - **Account Slicing**: Want to focus on specific accounts? Automate starting from a particular account and beyond! 🎯 18 | - **Extended Trading Hours**: Take advantage of extended hours for supported brokerages and never miss out on prime trading opportunities ⏰ 19 | - **Limit Order Support**: Set precise limit orders with select brokerages to stay in control of your trades! 📊 20 | - **1-Click Updates**: Update `.side` files with new tickers, account variables, and more in a single click using `.sh` or ' `.bat` script! 🔄 21 | - **JavaScript Helper Scripts**: Boost efficiency with easy-to-use JavaScript helper scripts for managing account arrays 💻 22 | 23 | --- 24 | ## Supported Brokerages 🏦 25 | This project contains the means of automating buy/sell stock orders within: 26 | 27 | - Ally Invest 28 | - Charles Schwab 29 | - Chase's J.P. Morgan Invest 30 | - Fidelity 31 | - Firstrade 32 | - Merrill Edge Lynch 33 | - Sofi Invest 34 | - Vanguard 35 | - Robinhood (Gold Sponsor Only) 36 | - WellsTrade (Gold Sponsor Only) 37 | 38 | --- 39 | ## 🚀 Unlock Premium Features w/ Gold Sponsorship! 🌟 40 | Gold Sponsors gain **exclusive access** to advanced, fully optimized features that streamline and automate brokerage management. Here’s a sneak peek at what you’ll receive with Gold Sponsorship: 41 | 42 | #### 🌟 **Optimized Python & Selenium Scripts** 43 | - **Completely reworked** for maximum efficiency, making them faster and easier to use. 44 | - Unlike public versions, which require more configuration, the Gold version is **seamless** and **user-friendly**. 45 | 46 | #### ⚡ **Up-to-Date & Faster Automation** 47 | - Access the latest brokerage automation updates and improvements. 48 | - Bug fixes, optimizations, and faster execution are guaranteed with the private version, unlike the public version, which may not be updated frequently. 49 | 50 | #### 💰 **Exclusive Tools** 51 | - **Automated Cash Transfer/Withdrawal Tool** to consolidate funds from multiple accounts. 52 | - **Exclusive Robinhood and WellsTrade automation support** available only to Gold Sponsors. 53 | - **Exclusive Features**: Automated limit pricing and account retrieval. Brokerages are dynamically consolidated within a single MASTER file containing all automation test suites. Additional command line arguments, environmental variables, etc., are available for enhanced customization. 54 | 55 | **Ready to upgrade?** 56 | 57 | [Become a Gold Sponsor **here** and unlock these exclusive benefits!](https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false) 58 | [![GitHub Sponsor](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/Prem-ium) 59 | 60 | 61 | 62 | --- 63 | ## Environmental Variables 🔧 64 | To use this project, you will need to set the following environment variables in your `.env` file: 65 | 66 | | Variable | Description | Type | 67 | |----------------------|------------------------------------------------------------------------------------------------------------------------|-----------------------------| 68 | | `SCHWAB_AI` | Total number of Schwab accounts | Integer | 69 | | `MERRILL_AI` | Total number of Merrill accounts | Integer | 70 | | `VANGUARD_AI` | Total number of Vanguard accounts | Integer | 71 | | `FIDELITY_AI` | Fidelity account numbers | Nested List of Strings | 72 | | `CHASE_AI` | [List of AI values in Trade URL](https://github.com/Prem-ium/Auto-StockTrader/blob/main/src/README.MD#chase-automatio) | Nested List of Strings | 73 | | `FIRSTRADE_AI` | Firstrade account numbers | List of Strings | 74 | | `ALLY_AI` | Ally account numbers. | List of Strings | 75 | | `CUSTOM_DIR` | Path to the folder to store updated `.side` files | String | 76 | | `DYNAMIC` | Enable dynamic account length feature (0 = Off, 1 = On) | Integer | 77 | | `SOFI_AI` | List of account numbers for Sofi Helper Auto.side | List of Strings | 78 | 79 | As a reminder, if you are a Gold Sponsor, please refer to the private `sponsors` repository README instead of this public version. The sponsor version includes more features and customization options tailored specifically for your needs. 80 | [Need more help?](https://github.com/Prem-ium/Auto-StockTrader/blob/main/src/README.MD) 81 | 82 |
83 | Login Env Example 84 |

85 | 86 | If you prefer, you can store your login information in a `.env` file to automatically open and log in to any brokerage. However, I strongly advise against this practice. Instead, I recommend using the login test to open the login URL and manually log in. Storing credentials in a `.side` file is discouraged due to security reasons. Multiple account credentials are separated by the `:` character. 87 | 88 | Please note that the login test is a best-try approach. Some brokerages, like Chase, may block automated logins, but you can quickly fill out the user/password information manually if you choose to use this tool. 89 |

90 | 91 | | Variable | Description | Type | Example | 92 | |-------------------|-----------------------------------------------|---------|--------------------------------| 93 | | `CHASE_LOGIN` | Chase Account Credentials | String | CHASE_LOGIN="USERNAME:PASSWORD" | 94 | | `FIDELITY_LOGIN` | Fidelity Account Credentials | String | FIDELITY_LOGIN="USERNAME:PASSWORD"| 95 | | `FIRSTADE_LOGIN` | Firstrade Account Credentials | String | FIRSTADE_LOGIN="USERNAME:PASSWORD"| 96 | | `MERRILL_LOGIN` | Merrill Account Credentials | String | MERRILL_LOGIN="USERNAME:PASSWORD"| 97 | | `SCHWAB_LOGIN` | Schwab Account Credentials | String | SCHWAB_LOGIN="USERNAME:PASSWORD" | 98 | | `ALLY_LOGIN` | Ally Account Credentials | String | ALLY_LOGIN="USERNAME:PASSWORD" | 99 | | `VANGUARD_LOGIN` | Vanguard Account Credentials | String | VANGUARD_LOGIN="USERNAME:PASSWORD"| 100 |
101 | 102 | Refer to `.env.example` for more clarity. 103 | 104 | --- 105 | ## Installation ⚙️ 106 | 107 | Follow these steps to set up and use Selenium IDE for automation: 108 | 109 | 1. **Install Selenium IDE:** 110 | 111 | **Note:** Selenium IDE is no longer available in browser extension stores. You must manually install it using the `.crx` file included in this project. 112 | 113 | **Steps:** 114 | 115 | 1. Open your browser (Chrome or Chromium-based browsers recommended). 116 | 2. Go to your browser's **Manage Extensions** page. 117 | 3. Enable **Developer Mode**. 118 | 4. Drag the `Selenium-IDE.crx` file from the `src` folder of this project into the browser window. 119 | 5. Confirm the installation when prompted. 120 | 121 | 2. **Clone the Repository & Install Dependencies:** 122 | ```bash 123 | git clone https://github.com/Prem-ium/Auto-StockTrader 124 | cd Auto-StockTrader 125 | pip install -r requirements.txt 126 | ``` 127 | 128 | 3. **Configure Environment Variables (.env):** 129 | Create a `.env` file and set up your environment variables following the formats outlined in the [Environmental Variables](https://github.com/Prem-ium/Auto-StockTrader#environmental-variables) section. 130 | 131 | 4. **Run the Python Script:** 132 | ```bash 133 | python main.py 134 | ``` 135 | 136 | - Pass a stock ticker as an argument to update all `.side` files: 137 | ```bash 138 | python main.py AAPL 139 | ``` 140 | 141 | - Separate multiple tickers with a comma: 142 | ```bash 143 | python main.py NVDA,TSLA,AAPL 144 | ``` 145 | 146 | 5. **Open Updated .side Files:** 147 | - Open the updated `.side` project files in Selenium IDE. 148 | 149 | 6. **Execute Desired Automation within Selenium IDE:** 150 | - Log in to your brokerage account. 151 | - Begin running your desired automation tasks in either the buy or sell test tabs. 152 | 153 | --- 154 | ## Donations ❤️ 155 | 156 | I've been diligently working on this project for several months, and I'm thrilled with the progress it has made. Based on user testimonials, it has proven to be an invaluable tool for automating stock ticker orders across multiple brokerage accounts and various brokerages. I am continually striving to enhance its functionality and optimize its efficiency for automated order execution. 157 | 158 | If you appreciate my work and would like to show your support, there are two convenient ways to make a donation: 159 | 160 | 1. **GitHub Sponsors** 161 | - [Donate via GitHub Sponsors](https://github.com/sponsors/Prem-ium) 162 | - Preferred because this donation method is fee-free and offers perks for your contribution. 163 | - [![GitHub Sponsor](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/Prem-ium) 164 | 165 | 2. **Buy Me A Coffee** 166 | - [Donate via Buy Me A Coffee](https://www.buymeacoffee.com/prem.ium) 167 | - [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/prem.ium) 168 | 3. **Referral Links** 169 | - If you're unable to make a monetary donation, you can still support my work by using my curated [Referral Links](https://github.com/Prem-ium/Referral-Link-Me/blob/main/README.md). Earn bonuses and rewards while contributing to my projects at the same time. 170 | - [Explore Referral Links](https://github.com/Prem-ium/Referral-Link-Me/blob/main/README.md) 171 | 172 | Your generous donations will go a long way in helping me cover the expenses associated with developing new features and promoting the project to a wider audience. I extend my heartfelt gratitude to all those who have already contributed. Thank you for your support! 173 | 174 | --- 175 | ## Experiencing Issues? 🛠️ 176 | I'm not available to respond to issues in this repository. For direct support, please consider sponsoring me below under the `Silver` or `Gold` tier. Keep in mind that the public version is mostly "as built" and is rarely updated, while the private Gold Sponsor version receives regular updates and support. 177 | [![Sponsor](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)](https://github.com/sponsors/Prem-ium) 178 | 179 | --- 180 |
181 | Pull Request Requirements 📋 182 | To ensure a smooth review process, please follow these guidelines when submitting a pull request (PR): 183 | 184 | 1. **Title**: Provide a clear and concise title. 185 | 2. **Description**: Include a detailed description of changes, problems addressed, and any relevant context. 186 | 3. **Documentation**: If necessary, update comments, README, requirements, and any relevant documentation. 187 | 4. **License Compliance**: Ensure any changes made in forks uphold the [repository's license](https://github.com/Prem-ium/Auto-StockTrader/blob/main/LICENSE). Do not make changes to certain areas such as the `FUNDING.yml` or any present copyright information without approval. 188 | 189 | Once you have verified that your changes adhere to these guidelines, please open a pull request with your changes and click 'Request Review' on the Pull Request. 190 | 191 | By adhering to these guidelines, you help maintain the quality and consistency of the project. Thank you for your interest in making contributions! 192 |
193 | 194 | --- 195 | ## License 196 | This repository follows the [BSD 3-Clause “New” or “Revised” License.](https://github.com/Prem-ium/Auto-StockTrader/blob/main/LICENSE) 197 | 198 | --- 199 |

End Notes & Extras 🧩

200 | 201 | 202 | ### 🙏 Acknowledgments 203 | 204 | I'd like to sincerly thank my amazing: 205 | - [⭐ Sponsors](https://github.com/sponsors/Prem-ium) 206 | - ☕ [Donors](https://www.buymeacoffee.com/prem.ium) 207 | - 🛠 [Contributors](https://github.com/Prem-ium/Auto-StockTrader/graphs/contributors) 208 | 209 | Your support is invaluable, allowing me to continue creating exciting projects like this. Each one of you plays a crucial role, and I am deeply grateful for your contributions. 210 | If you found this project helpful, please consider: 211 | - Leaving a ⭐ 212 | - [Becoming a Sponsor](https://github.com/sponsors/Prem-ium) 213 | - Sharing the project with others 214 | 215 | --- 216 | ### Featured Project(s) 217 |
218 | 📦 TaxMerge 219 | 220 | A powerful tool for merging 1099 tax PDFs from multiple brokerages into one clean CSV. 221 | 222 | **Highlights:** 223 | - 📊 Auto-analysis + visualization of proceeds, gains, interest, and more 224 | - 🧾 Built-in CSV + PDF viewer for accuracy checks 225 | - 💰 Helps avoid $50–$100 document fees 226 | - 🔒 One-time purchase via [GitHub](https://github.com/Prem-ium/Tax-Merge) 227 |
228 | 🎥 Demo Video 229 | 230 | 234 | 235 |
236 | 237 |
238 | 239 | --- 240 | 241 | ### ⚡ Speed Tips (for Selenium IDE users) 242 | 243 | - Adjust `SET_SPEED` for faster test execution 244 | - Use **Reference** instead of **Log** to improve performance 245 | - Turn on **Best Performance** mode in your battery settings 246 | - Keep the automation tab in focus for smoother execution 247 | 248 | --- 249 | 250 |
251 | 🧰 Stream Deck Setup (Optional) 252 | 253 | Here's my custom Stream Deck profile: 254 | 255 | Stream Deck Setup 256 | 257 | | Action | Type | Command | 258 | |-------------------|------------|---------| 259 | | Run | Hotkey | `Ctrl + R` | 260 | | Stop | Hotkey | `Ctrl + .` | 261 | | Pause | Hotkey | `Ctrl + P` | 262 | | QuickStart | Open | `cmd.exe /c "RSA-QuickStart.bat"` | 263 | | Save | Hotkey | `Ctrl + S` | 264 | | Switch Windows | Hotkey | `Alt + Tab` | 265 | | Open Tests | Hotkey | `Ctrl + 1` | 266 | | Open Test Suites | Hotkey | `Ctrl + 2` | 267 | | Start Brave | Powershell | `Start-Process ... brave.exe` | 268 | | Start Edge | Powershell | `start msedge --app=...` | 269 | 270 |
271 | 272 | --- 273 | 274 |
275 | ⚠️ Disclaimer 276 | 277 | - I am **not** a financial advisor, and this project is **not** affiliated with any brokerage. 278 | - Use this tool **at your own risk** — I’m not liable for financial loss, account bans, or other damages. 279 | - This project is provided “as is,” without warranty. By using it, you agree to assume all responsibility. 280 | 281 |
282 |
283 | -------------------------------------------------------------------------------- /src/Selenium_IDE/Firstrade_Auto.side: -------------------------------------------------------------------------------- 1 | { 2 | "id": "9c9b281d-e9b3-4172-8e46-be01813d4437", 3 | "version": "2.0", 4 | "name": "Firstrade", 5 | "url": "https://invest.firstrade.com", 6 | "tests": [{ 7 | "id": "c4367fd5-3ea6-4cac-ae91-509defb9d7c9", 8 | "name": "+ Buy Firstrade", 9 | "commands": [{ 10 | "id": "0d6894dd-2d55-4987-9e90-c92de75a3c00", 11 | "comment": "", 12 | "command": "store", 13 | "target": "TICKER_GOES_HERE", 14 | "targets": [], 15 | "value": "TICKER" 16 | }, { 17 | "id": "30dfd5f1-3abb-4b9c-bd14-9e537847415a", 18 | "comment": "", 19 | "command": "store", 20 | "target": "1", 21 | "targets": [], 22 | "value": "QUANTITY" 23 | }, { 24 | "id": "0c21e4cd-cee0-4c9a-902d-711bd51ff73f", 25 | "comment": "", 26 | "command": "store", 27 | "target": "enterlastsuccessfulaccounthere", 28 | "targets": [], 29 | "value": "target" 30 | }, { 31 | "id": "a9efebcd-6b04-46fe-8622-0ecb5642d9bd", 32 | "comment": "", 33 | "command": "executeScript", 34 | "target": "return ${TICKER}.split(\",\");", 35 | "targets": [], 36 | "value": "TICKERS" 37 | }, { 38 | "id": "e3d9e076-85a1-429e-9c89-977c05592d26", 39 | "comment": "", 40 | "command": "executeScript", 41 | "target": "return ['YOUR','ACCOUNTS','HERE'];", 42 | "targets": [], 43 | "value": "accounts" 44 | }, { 45 | "id": "0158ffb3-1dcf-4c14-8727-77ae21435138", 46 | "comment": "", 47 | "command": "open", 48 | "target": "https://invest.firstrade.com/cgi-bin/main#/cgi-bin/stock_order", 49 | "targets": [], 50 | "value": "" 51 | }, { 52 | "id": "8c9dc35a-76b8-4428-a554-848f848b2b0d", 53 | "comment": "", 54 | "command": "executeScript", 55 | "target": "return ${accounts}.slice(${accounts}.indexOf(${target}.trim()) + 1);", 56 | "targets": [], 57 | "value": "list" 58 | }, { 59 | "id": "dfeb4796-7aa7-48ff-ab6f-8328acc32aaa", 60 | "comment": "", 61 | "command": "store", 62 | "target": "", 63 | "targets": [], 64 | "value": "LIMIT_PRICE" 65 | }, { 66 | "id": "26c7e8ca-3189-43e2-8746-9112dfd983dc", 67 | "comment": "", 68 | "command": "forEach", 69 | "target": "list", 70 | "targets": [], 71 | "value": "account" 72 | }, { 73 | "id": "9192133d-cc72-47d1-9f2c-50c7aace0192", 74 | "comment": "", 75 | "command": "click", 76 | "target": "id=accountId1", 77 | "targets": [ 78 | ["id=accountId1", "id"], 79 | ["name=accountId", "name"], 80 | ["css=#accountId1", "css:finder"], 81 | ["xpath=//select[@id='accountId1']", "xpath:attributes"], 82 | ["xpath=//div[@id='stockorder_content']/div[2]/div/div/select", "xpath:idRelative"], 83 | ["xpath=//div/div/select", "xpath:position"] 84 | ], 85 | "value": "" 86 | }, { 87 | "id": "38e8ff8d-1e26-4025-90fe-0b1ca9011ef1", 88 | "comment": "", 89 | "command": "select", 90 | "target": "id=accountId1", 91 | "targets": [], 92 | "value": "label=${account}" 93 | }, { 94 | "id": "3ae8e293-1951-4fd4-b8a4-cf544b316a66", 95 | "comment": "", 96 | "command": "forEach", 97 | "target": "TICKERS", 98 | "targets": [], 99 | "value": "TICK" 100 | }, { 101 | "id": "43fefee1-9afb-4306-8432-151c9ec959b0", 102 | "comment": "", 103 | "command": "pause", 104 | "target": "750", 105 | "targets": [], 106 | "value": "" 107 | }, { 108 | "id": "c1b7a7a9-ee0d-42b8-98fe-c2c48eff864e", 109 | "comment": "", 110 | "command": "click", 111 | "target": "id=transactionType_Buy1", 112 | "targets": [ 113 | ["id=transactionType_Buy1", "id"], 114 | ["name=transactionType", "name"], 115 | ["css=#transactionType_Buy1", "css:finder"], 116 | ["xpath=//input[@id='transactionType_Buy1']", "xpath:attributes"], 117 | ["xpath=//div[@id='colorbox']/div/div/ul/li[2]/input", "xpath:idRelative"], 118 | ["xpath=//li[2]/input", "xpath:position"] 119 | ], 120 | "value": "" 121 | }, { 122 | "id": "743ae9b3-ecff-4d08-8e7d-810ddbd6ed6f", 123 | "comment": "", 124 | "command": "click", 125 | "target": "id=quantity1", 126 | "targets": [ 127 | ["id=quantity1", "id"], 128 | ["name=quantity", "name"], 129 | ["css=#quantity1", "css:finder"], 130 | ["xpath=//input[@id='quantity1']", "xpath:attributes"], 131 | ["xpath=//div[@id='colorbox']/div/div/ul[2]/li[2]/input", "xpath:idRelative"], 132 | ["xpath=//ul[2]/li[2]/input", "xpath:position"] 133 | ], 134 | "value": "" 135 | }, { 136 | "id": "89422d3b-44ab-4be0-a910-f5baa2bdaaf9", 137 | "comment": "", 138 | "command": "type", 139 | "target": "id=quantity1", 140 | "targets": [ 141 | ["id=quantity1", "id"], 142 | ["name=quantity", "name"], 143 | ["css=#quantity1", "css:finder"], 144 | ["xpath=//input[@id='quantity1']", "xpath:attributes"], 145 | ["xpath=//div[@id='colorbox']/div/div/ul[2]/li[2]/input", "xpath:idRelative"], 146 | ["xpath=//ul[2]/li[2]/input", "xpath:position"] 147 | ], 148 | "value": "${QUANTITY}" 149 | }, { 150 | "id": "bd07a705-7268-4cc1-a629-926010789596", 151 | "comment": "", 152 | "command": "click", 153 | "target": "id=symbol1", 154 | "targets": [ 155 | ["id=symbol1", "id"], 156 | ["name=symbol", "name"], 157 | ["css=#symbol1", "css:finder"], 158 | ["xpath=//input[@id='symbol1']", "xpath:attributes"], 159 | ["xpath=//div[@id='colorbox']/div/div/ul[3]/li[2]/input", "xpath:idRelative"], 160 | ["xpath=//ul[3]/li[2]/input", "xpath:position"] 161 | ], 162 | "value": "" 163 | }, { 164 | "id": "9d552320-c8b8-44a4-ac83-29dc3da16388", 165 | "comment": "", 166 | "command": "sendKeys", 167 | "target": "id=symbol1", 168 | "targets": [], 169 | "value": "${TICK}" 170 | }, { 171 | "id": "11e94034-27a2-4279-89f4-6380a0353ab8", 172 | "comment": "", 173 | "command": "click", 174 | "target": "id=limitPrice1", 175 | "targets": [ 176 | ["id=limitPrice1", "id"], 177 | ["name=limitPrice", "name"], 178 | ["css=#limitPrice1", "css:finder"], 179 | ["xpath=//input[@id='limitPrice1']", "xpath:attributes"], 180 | ["xpath=//div[@id='colorbox']/div/div/ul[5]/li[2]/input", "xpath:idRelative"], 181 | ["xpath=//ul[5]/li[2]/input", "xpath:position"] 182 | ], 183 | "value": "" 184 | }, { 185 | "id": "8108172d-0f5e-4215-a5c7-51edeb185522", 186 | "comment": "", 187 | "command": "sendKeys", 188 | "target": "id=limitPrice1", 189 | "targets": [], 190 | "value": "${LIMIT_PRICE}" 191 | }, { 192 | "id": "703bd4c0-976e-4bcc-98d7-cec5a044fcf4", 193 | "comment": "", 194 | "command": "click", 195 | "target": "id=submitOrder1", 196 | "targets": [ 197 | ["id=submitOrder1", "id"], 198 | ["name=submitOrder", "name"], 199 | ["css=#submitOrder1", "css:finder"], 200 | ["xpath=//a[contains(text(),'Send Order')]", "xpath:link"], 201 | ["xpath=//a[@id='submitOrder1']", "xpath:attributes"], 202 | ["xpath=//div[@id='stockorder_content']/div[2]/div[6]/span/a[3]", "xpath:idRelative"], 203 | ["xpath=(//a[contains(@href, 'javascript:void(0);')])[18]", "xpath:href"], 204 | ["xpath=//span/a[3]", "xpath:position"] 205 | ], 206 | "value": "" 207 | }, { 208 | "id": "5a4f50cf-ae25-43d8-aeb9-722707b250b0", 209 | "comment": "", 210 | "command": "click", 211 | "target": "css=.submitted_placeorder_bnt", 212 | "targets": [ 213 | ["css=.submitted_placeorder_bnt", "css:finder"], 214 | ["xpath=//a[contains(text(),'Place Another Order')]", "xpath:link"], 215 | ["xpath=//div[@id='stockorder_content']/div[2]/div[8]/span/a", "xpath:idRelative"], 216 | ["xpath=//a[contains(@href, \"javascript:headerChange('/cgi-bin/stock_order');\")]", "xpath:href"], 217 | ["xpath=//div[8]/span/a", "xpath:position"] 218 | ], 219 | "value": "" 220 | }, { 221 | "id": "132d2592-946f-4f09-9827-c4060f381ccc", 222 | "comment": "", 223 | "command": "mouseOver", 224 | "target": "id=acctlink_pos", 225 | "targets": [ 226 | ["id=acctlink_pos", "id"], 227 | ["css=#acctlink_pos", "css:finder"], 228 | ["xpath=//a[@id='acctlink_pos']", "xpath:attributes"], 229 | ["xpath=//div[@id='maincontent']/div[2]/div[3]/div/div/ul/li[2]/a", "xpath:idRelative"], 230 | ["xpath=(//a[contains(@href, 'javascript:void(0)')])[36]", "xpath:href"], 231 | ["xpath=//div[3]/div/div/ul/li[2]/a", "xpath:position"] 232 | ], 233 | "value": "" 234 | }, { 235 | "id": "f935c532-19df-4c6d-b272-80aa592cd716", 236 | "comment": "", 237 | "command": "echo", 238 | "target": "${account} bought ${TICK}", 239 | "targets": [], 240 | "value": "" 241 | }, { 242 | "id": "e820fde7-5e7a-4a5b-91e5-161a47ca455a", 243 | "comment": "", 244 | "command": "end", 245 | "target": "", 246 | "targets": [], 247 | "value": "" 248 | }, { 249 | "id": "0c3eb518-1ec7-444e-8010-f53358b39d55", 250 | "comment": "", 251 | "command": "end", 252 | "target": "", 253 | "targets": [], 254 | "value": "" 255 | }, { 256 | "id": "1e254390-4b2e-4445-a86c-5a5ade17d9b5", 257 | "comment": "", 258 | "command": "open", 259 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 260 | "targets": [], 261 | "value": "" 262 | }, { 263 | "id": "216bea27-f7ca-49fe-be4e-ef6d83369e73", 264 | "comment": "", 265 | "command": "echo", 266 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 267 | "targets": [], 268 | "value": "" 269 | }] 270 | }, { 271 | "id": "79f621d4-a532-4e4a-bb70-680c3f88d074", 272 | "name": "- Sell Firstrade", 273 | "commands": [{ 274 | "id": "79813301-6cc4-48d2-9e86-2a68ce307317", 275 | "comment": "", 276 | "command": "store", 277 | "target": "TICKER_GOES_HERE", 278 | "targets": [], 279 | "value": "TICKER" 280 | }, { 281 | "id": "8f52ba48-9f1e-4129-bfd5-e5f8ca8e8402", 282 | "comment": "", 283 | "command": "store", 284 | "target": "1", 285 | "targets": [], 286 | "value": "QUANTITY" 287 | }, { 288 | "id": "3a7f8864-c6ce-41a0-bc24-2367f38b18eb", 289 | "comment": "", 290 | "command": "store", 291 | "target": "enterlastsuccessfulaccounthere", 292 | "targets": [], 293 | "value": "target" 294 | }, { 295 | "id": "c962cffb-a5b7-4ed7-be34-866dd0101d3c", 296 | "comment": "", 297 | "command": "executeScript", 298 | "target": "return ${TICKER}.split(\",\");", 299 | "targets": [], 300 | "value": "TICKERS" 301 | }, { 302 | "id": "fb05d9fc-0aa5-402d-b194-965639ebbf4d", 303 | "comment": "", 304 | "command": "executeScript", 305 | "target": "return ['YOUR','ACCOUNTS','HERE'];", 306 | "targets": [], 307 | "value": "accounts" 308 | }, { 309 | "id": "ef7683ac-2b3d-4c60-986c-0f9d96209cd7", 310 | "comment": "", 311 | "command": "open", 312 | "target": "https://invest.firstrade.com/cgi-bin/main#/cgi-bin/stock_order", 313 | "targets": [], 314 | "value": "" 315 | }, { 316 | "id": "3c57aa74-6990-4332-bb2c-fe40c6c9ecbb", 317 | "comment": "", 318 | "command": "executeScript", 319 | "target": "return ${accounts}.slice(${accounts}.indexOf(${target}.trim()) + 1);", 320 | "targets": [], 321 | "value": "list" 322 | }, { 323 | "id": "8d8dfa67-b38b-4e55-b738-a243b01786a4", 324 | "comment": "", 325 | "command": "store", 326 | "target": "", 327 | "targets": [], 328 | "value": "LIMIT_PRICE" 329 | }, { 330 | "id": "27db9827-d53a-4aeb-9bcc-05baa93646f5", 331 | "comment": "", 332 | "command": "forEach", 333 | "target": "list", 334 | "targets": [], 335 | "value": "account" 336 | }, { 337 | "id": "a5157059-1c70-4cb1-afe6-06221777f529", 338 | "comment": "", 339 | "command": "click", 340 | "target": "id=accountId1", 341 | "targets": [ 342 | ["id=accountId1", "id"], 343 | ["name=accountId", "name"], 344 | ["css=#accountId1", "css:finder"], 345 | ["xpath=//select[@id='accountId1']", "xpath:attributes"], 346 | ["xpath=//div[@id='stockorder_content']/div[2]/div/div/select", "xpath:idRelative"], 347 | ["xpath=//div/div/select", "xpath:position"] 348 | ], 349 | "value": "" 350 | }, { 351 | "id": "6114101b-8cce-4a7d-9a96-0dbc3d2d880e", 352 | "comment": "", 353 | "command": "select", 354 | "target": "id=accountId1", 355 | "targets": [], 356 | "value": "label=${account}" 357 | }, { 358 | "id": "47340326-7154-4297-9d3b-2f7982995398", 359 | "comment": "", 360 | "command": "forEach", 361 | "target": "TICKERS", 362 | "targets": [], 363 | "value": "TICK" 364 | }, { 365 | "id": "82772a8c-cdcb-429e-b31a-6c51bebe3a8b", 366 | "comment": "", 367 | "command": "pause", 368 | "target": "750", 369 | "targets": [], 370 | "value": "" 371 | }, { 372 | "id": "fc79f397-eb52-4b86-800c-1dd3ab78e5b2", 373 | "comment": "", 374 | "command": "click", 375 | "target": "id=transactionType_Sell1", 376 | "targets": [ 377 | ["id=transactionType_Sell1", "id"], 378 | ["css=#transactionType_Sell1", "css:finder"], 379 | ["xpath=//input[@id='transactionType_Sell1']", "xpath:attributes"], 380 | ["xpath=//div[@id='colorbox']/div/div/ul/li[3]/input", "xpath:idRelative"], 381 | ["xpath=//li[3]/input", "xpath:position"] 382 | ], 383 | "value": "" 384 | }, { 385 | "id": "4aa9980f-e7f4-4982-aade-8918d0f3f0df", 386 | "comment": "", 387 | "command": "click", 388 | "target": "id=quantity1", 389 | "targets": [ 390 | ["id=quantity1", "id"], 391 | ["name=quantity", "name"], 392 | ["css=#quantity1", "css:finder"], 393 | ["xpath=//input[@id='quantity1']", "xpath:attributes"], 394 | ["xpath=//div[@id='colorbox']/div/div/ul[2]/li[2]/input", "xpath:idRelative"], 395 | ["xpath=//ul[2]/li[2]/input", "xpath:position"] 396 | ], 397 | "value": "" 398 | }, { 399 | "id": "6bb0c3d7-5028-40f1-bb77-1b4787e4eea8", 400 | "comment": "", 401 | "command": "type", 402 | "target": "id=quantity1", 403 | "targets": [ 404 | ["id=quantity1", "id"], 405 | ["name=quantity", "name"], 406 | ["css=#quantity1", "css:finder"], 407 | ["xpath=//input[@id='quantity1']", "xpath:attributes"], 408 | ["xpath=//div[@id='colorbox']/div/div/ul[2]/li[2]/input", "xpath:idRelative"], 409 | ["xpath=//ul[2]/li[2]/input", "xpath:position"] 410 | ], 411 | "value": "${QUANTITY}" 412 | }, { 413 | "id": "1593ca70-cbeb-4702-9fae-bb680f82c944", 414 | "comment": "", 415 | "command": "click", 416 | "target": "id=symbol1", 417 | "targets": [ 418 | ["id=symbol1", "id"], 419 | ["name=symbol", "name"], 420 | ["css=#symbol1", "css:finder"], 421 | ["xpath=//input[@id='symbol1']", "xpath:attributes"], 422 | ["xpath=//div[@id='colorbox']/div/div/ul[3]/li[2]/input", "xpath:idRelative"], 423 | ["xpath=//ul[3]/li[2]/input", "xpath:position"] 424 | ], 425 | "value": "" 426 | }, { 427 | "id": "e6b32b42-fcc3-416c-a72d-17cc91213917", 428 | "comment": "", 429 | "command": "sendKeys", 430 | "target": "id=symbol1", 431 | "targets": [], 432 | "value": "${TICK}" 433 | }, { 434 | "id": "48240df5-1a51-4c57-bba1-c05034762ad4", 435 | "comment": "", 436 | "command": "click", 437 | "target": "id=priceType1", 438 | "targets": [ 439 | ["id=priceType1", "id"], 440 | ["name=priceType", "name"], 441 | ["css=#priceType1", "css:finder"], 442 | ["xpath=//select[@id='priceType1']", "xpath:attributes"], 443 | ["xpath=//div[@id='colorbox']/div/div/ul[4]/li[2]/select", "xpath:idRelative"], 444 | ["xpath=//li[2]/select", "xpath:position"] 445 | ], 446 | "value": "" 447 | }, { 448 | "id": "6148f171-bcd7-4d28-aeaa-31dfe0acce62", 449 | "comment": "", 450 | "command": "select", 451 | "target": "id=priceType1", 452 | "targets": [], 453 | "value": "label=Market" 454 | }, { 455 | "id": "a85e7308-a330-4659-aff2-710f6a6da999", 456 | "comment": "", 457 | "command": "click", 458 | "target": "id=submitOrder1", 459 | "targets": [ 460 | ["id=submitOrder1", "id"], 461 | ["name=submitOrder", "name"], 462 | ["css=#submitOrder1", "css:finder"], 463 | ["xpath=//a[contains(text(),'Send Order')]", "xpath:link"], 464 | ["xpath=//a[@id='submitOrder1']", "xpath:attributes"], 465 | ["xpath=//div[@id='stockorder_content']/div[2]/div[6]/span/a[3]", "xpath:idRelative"], 466 | ["xpath=(//a[contains(@href, 'javascript:void(0);')])[18]", "xpath:href"], 467 | ["xpath=//span/a[3]", "xpath:position"] 468 | ], 469 | "value": "" 470 | }, { 471 | "id": "6dc565f0-de36-4d76-975e-f94cd0a989c9", 472 | "comment": "", 473 | "command": "click", 474 | "target": "css=.submitted_placeorder_bnt", 475 | "targets": [ 476 | ["css=.submitted_placeorder_bnt", "css:finder"], 477 | ["xpath=//a[contains(text(),'Place Another Order')]", "xpath:link"], 478 | ["xpath=//div[@id='stockorder_content']/div[2]/div[8]/span/a", "xpath:idRelative"], 479 | ["xpath=//a[contains(@href, \"javascript:headerChange('/cgi-bin/stock_order');\")]", "xpath:href"], 480 | ["xpath=//div[8]/span/a", "xpath:position"] 481 | ], 482 | "value": "" 483 | }, { 484 | "id": "03e659e9-ac44-482e-a104-53453a17cfd4", 485 | "comment": "", 486 | "command": "mouseOver", 487 | "target": "id=acctlink_pos", 488 | "targets": [ 489 | ["id=acctlink_pos", "id"], 490 | ["css=#acctlink_pos", "css:finder"], 491 | ["xpath=//a[@id='acctlink_pos']", "xpath:attributes"], 492 | ["xpath=//div[@id='maincontent']/div[2]/div[3]/div/div/ul/li[2]/a", "xpath:idRelative"], 493 | ["xpath=(//a[contains(@href, 'javascript:void(0)')])[36]", "xpath:href"], 494 | ["xpath=//div[3]/div/div/ul/li[2]/a", "xpath:position"] 495 | ], 496 | "value": "" 497 | }, { 498 | "id": "6e05b1af-2bba-4e80-803a-d798b472ed64", 499 | "comment": "", 500 | "command": "echo", 501 | "target": "${account} sold ${TICK}", 502 | "targets": [], 503 | "value": "" 504 | }, { 505 | "id": "0a58485e-a776-4058-845f-301a054b9e11", 506 | "comment": "", 507 | "command": "end", 508 | "target": "", 509 | "targets": [], 510 | "value": "" 511 | }, { 512 | "id": "ce6c5a73-42ed-47d6-a6ee-80477080972e", 513 | "comment": "", 514 | "command": "end", 515 | "target": "", 516 | "targets": [], 517 | "value": "" 518 | }, { 519 | "id": "6ea07250-8df6-45ab-a86f-eb489a5760c6", 520 | "comment": "", 521 | "command": "open", 522 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 523 | "targets": [], 524 | "value": "" 525 | }, { 526 | "id": "3cfd994f-eed2-4c9c-831a-e6e84b67df73", 527 | "comment": "", 528 | "command": "echo", 529 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 530 | "targets": [], 531 | "value": "" 532 | }] 533 | }, { 534 | "id": "24b2fe7d-03f7-4b18-b846-77fae0f90f87", 535 | "name": "| Firstrade Login", 536 | "commands": [{ 537 | "id": "550a267d-aa4e-423f-b611-90458a1759ac", 538 | "comment": "", 539 | "command": "open", 540 | "target": "https://invest.firstrade.com/cgi-bin/login", 541 | "targets": [], 542 | "value": "" 543 | }, { 544 | "id": "3835fe1f-7ddc-473b-a3a4-55361aa6f6f3", 545 | "comment": "", 546 | "command": "store", 547 | "target": "LOGIN:HERE", 548 | "targets": [], 549 | "value": "FIRSTRADE_LOGIN" 550 | }, { 551 | "id": "6db7699f-73a5-47c0-8192-466dfa2f796f", 552 | "comment": "", 553 | "command": "if", 554 | "target": "${FIRSTRADE_LOGIN} != \"LOGIN:HERE\"", 555 | "targets": [], 556 | "value": "" 557 | }, { 558 | "id": "360f7e65-2aba-4ad8-9736-ad54f21795e8", 559 | "comment": "", 560 | "command": "executeScript", 561 | "target": "return ${FIRSTRADE_LOGIN}.split(\":\");", 562 | "targets": [], 563 | "value": "LOGIN" 564 | }, { 565 | "id": "acc7743d-174c-48a7-aa06-f12decd6ef30", 566 | "comment": "", 567 | "command": "echo", 568 | "target": "It is not reccomended to use this method to automate a login. Proceed at your own risk.", 569 | "targets": [], 570 | "value": "" 571 | }, { 572 | "id": "90786ca9-c88b-4cda-aa8d-3f03163fe619", 573 | "comment": "", 574 | "command": "click", 575 | "target": "id=username", 576 | "targets": [ 577 | ["id=username", "id"], 578 | ["name=username", "name"], 579 | ["css=#username", "css:finder"], 580 | ["xpath=//input[@id='username']", "xpath:attributes"], 581 | ["xpath=//form[@id='loginForm']/div[3]/input", "xpath:idRelative"], 582 | ["xpath=//div[3]/input", "xpath:position"] 583 | ], 584 | "value": "" 585 | }, { 586 | "id": "ea050150-059c-4dbb-96b5-b2dad6f61ca6", 587 | "comment": "", 588 | "command": "type", 589 | "target": "id=username", 590 | "targets": [ 591 | ["id=username", "id"], 592 | ["name=username", "name"], 593 | ["css=#username", "css:finder"], 594 | ["xpath=//input[@id='username']", "xpath:attributes"], 595 | ["xpath=//form[@id='loginForm']/div[3]/input", "xpath:idRelative"], 596 | ["xpath=//div[3]/input", "xpath:position"] 597 | ], 598 | "value": "${LOGIN[0]}" 599 | }, { 600 | "id": "3b3eb9f5-f00d-42f3-a636-7980060a9ca3", 601 | "comment": "", 602 | "command": "click", 603 | "target": "id=password", 604 | "targets": [ 605 | ["id=password", "id"], 606 | ["name=password", "name"], 607 | ["css=#password", "css:finder"], 608 | ["xpath=//input[@id='password']", "xpath:attributes"], 609 | ["xpath=//form[@id='loginForm']/div[4]/input", "xpath:idRelative"], 610 | ["xpath=//div[4]/input", "xpath:position"] 611 | ], 612 | "value": "" 613 | }, { 614 | "id": "1842a5a3-8d1b-4439-b33e-cc1e253ae3c7", 615 | "comment": "", 616 | "command": "type", 617 | "target": "id=password", 618 | "targets": [ 619 | ["id=password", "id"], 620 | ["name=password", "name"], 621 | ["css=#password", "css:finder"], 622 | ["xpath=//input[@id='password']", "xpath:attributes"], 623 | ["xpath=//form[@id='loginForm']/div[4]/input", "xpath:idRelative"], 624 | ["xpath=//div[4]/input", "xpath:position"] 625 | ], 626 | "value": "${LOGIN[1]}" 627 | }, { 628 | "id": "c7d0648e-6400-4489-b02f-b2f5d145672e", 629 | "comment": "", 630 | "command": "click", 631 | "target": "id=loginButton", 632 | "targets": [ 633 | ["id=loginButton", "id"], 634 | ["css=#loginButton", "css:finder"], 635 | ["xpath=//input[@id='loginButton']", "xpath:attributes"], 636 | ["xpath=//form[@id='loginForm']/input[4]", "xpath:idRelative"], 637 | ["xpath=//input[4]", "xpath:position"] 638 | ], 639 | "value": "" 640 | }, { 641 | "id": "c3657f82-8f80-4a86-84a9-947474233276", 642 | "comment": "", 643 | "command": "end", 644 | "target": "", 645 | "targets": [], 646 | "value": "" 647 | }] 648 | }], 649 | "suites": [{ 650 | "id": "34398528-d8e1-448a-9801-cbe828f27800", 651 | "name": "Default Suite", 652 | "persistSession": false, 653 | "parallel": false, 654 | "timeout": 300, 655 | "tests": ["c4367fd5-3ea6-4cac-ae91-509defb9d7c9"] 656 | }], 657 | "urls": ["https://invest.firstrade.com/"], 658 | "plugins": [] 659 | } -------------------------------------------------------------------------------- /src/Selenium_IDE/Account_Management_Tools.side: -------------------------------------------------------------------------------- 1 | { 2 | "id": "e4e597d0-462c-413c-9297-475a4a3036c2", 3 | "version": "2.0", 4 | "name": "Account Manager", 5 | "url": "http://localhost/", 6 | "tests": [{ 7 | "id": "aa447fb9-1700-464c-91b8-fabcc941ee91", 8 | "name": "[ Fidelity Account Rename ]", 9 | "commands": [{ 10 | "id": "f1fd36d6-f939-41ce-8413-69d7ec38d9de", 11 | "comment": "", 12 | "command": "open", 13 | "target": "https://digital.fidelity.com/ftgw/digital/portfolio/summary", 14 | "targets": [], 15 | "value": "" 16 | }, { 17 | "id": "c4cdc97f-d86a-4f2b-b5f3-fdfd4f66188c", 18 | "comment": "", 19 | "command": "executeScript", 20 | "target": "return Array.from({length: 10}, (_, i) => i + 1);", 21 | "targets": [], 22 | "value": "accounts" 23 | }, { 24 | "id": "11bf21ca-731b-4cf5-8ee4-eedce21d8421", 25 | "comment": "", 26 | "command": "click", 27 | "target": "css=.customize-text s-fallback-wrapper", 28 | "targets": [ 29 | ["css=.customize-text s-fallback-wrapper", "css:finder"], 30 | ["xpath=//a/span/s-slot/s-fallback-wrapper", "xpath:position"], 31 | ["xpath=//s-fallback-wrapper[contains(.,'Customize')]", "xpath:innerText"] 32 | ], 33 | "value": "" 34 | }, { 35 | "id": "f3762eed-e33f-4666-957d-44c9a6af991f", 36 | "comment": "", 37 | "command": "forEach", 38 | "target": "accounts", 39 | "targets": [], 40 | "value": "numb" 41 | }, { 42 | "id": "dd7da370-4611-4e70-9bf5-8fd4433971a0", 43 | "comment": "", 44 | "command": "pause", 45 | "target": "1000", 46 | "targets": [], 47 | "value": "" 48 | }, { 49 | "id": "c21c6f5d-76d0-4619-8e91-d91eb12e09b4", 50 | "comment": "", 51 | "command": "click", 52 | "target": "css=.custom-modal__accounts-item:nth-child(${numb}) .pvd-checkbox__label", 53 | "targets": [ 54 | ["css=.custom-modal__accounts-item:nth-child(2) .pvd-checkbox__label", "css:finder"], 55 | ["xpath=//div[@id='pvd-tab-panel-id-589795610982']/s-slot/s-assigned-wrapper/div/div[2]/div/div/div/div[2]/div/div/pvd3-checkbox/s-root/div/label", "xpath:idRelative"], 56 | ["xpath=//div[2]/div/div/pvd3-checkbox/s-root/div/label", "xpath:position"] 57 | ], 58 | "value": "" 59 | }, { 60 | "id": "e0df0a67-9336-4cc1-8a59-ae4b1386d778", 61 | "comment": "", 62 | "command": "click", 63 | "target": "css=.account-actions-el:nth-child(2) .pvd-button__text s-assigned-wrapper", 64 | "targets": [ 65 | ["css=.account-actions-el:nth-child(2) .pvd-button__text s-assigned-wrapper", "css:finder"], 66 | ["xpath=//div[@id='pvd-tab-panel-id-14083821632']/s-slot/s-assigned-wrapper/div/div/div[2]/pvd3-button/s-root/button/div/span/s-slot/s-assigned-wrapper", "xpath:idRelative"], 67 | ["xpath=//div[2]/pvd3-button/s-root/button/div/span/s-slot/s-assigned-wrapper", "xpath:position"] 68 | ], 69 | "value": "" 70 | }, { 71 | "id": "62e1badb-78db-4f71-a337-ebc1d70863de", 72 | "comment": "", 73 | "command": "click", 74 | "target": "css=.account-name-input-field .pvd-input__input", 75 | "targets": [ 76 | ["css=.account-name-input-field .pvd-input__input", "css:finder"], 77 | ["xpath=(//input[@type='text'])[4]", "xpath:attributes"], 78 | ["xpath=//div[@id='pvd-tab-panel-id-14083821632']/s-slot/s-assigned-wrapper/div/div[2]/div/div/div/div/div/div/pvd3-input/s-root/div/input", "xpath:idRelative"], 79 | ["xpath=//div/div/div/pvd3-input/s-root/div/input", "xpath:position"] 80 | ], 81 | "value": "" 82 | }, { 83 | "id": "4520c904-66f0-4c42-9546-0d2470b7692b", 84 | "comment": "", 85 | "command": "type", 86 | "target": "css=.account-name-input-field .pvd-input__input", 87 | "targets": [ 88 | ["css=.account-name-input-field .pvd-input__input", "css:finder"], 89 | ["xpath=(//input[@type='text'])[4]", "xpath:attributes"], 90 | ["xpath=//div[@id='pvd-tab-panel-id-14083821632']/s-slot/s-assigned-wrapper/div/div[2]/div/div/div/div/div/div/pvd3-input/s-root/div/input", "xpath:idRelative"], 91 | ["xpath=//div/div/div/pvd3-input/s-root/div/input", "xpath:position"] 92 | ], 93 | "value": "Individual ${numb}" 94 | }, { 95 | "id": "cbf70c7f-8bab-4eaf-8918-a78664576bac", 96 | "comment": "", 97 | "command": "echo", 98 | "target": "${numb} Account Name Updated", 99 | "targets": [], 100 | "value": "" 101 | }, { 102 | "id": "f1947c14-8edd-4003-9489-c6ad9f96ac76", 103 | "comment": "", 104 | "command": "end", 105 | "target": "", 106 | "targets": [], 107 | "value": "" 108 | }, { 109 | "id": "6e20537e-2124-44c8-a448-1ac6eaccfedb", 110 | "comment": "", 111 | "command": "click", 112 | "target": "css=.custom-modal__btn-actions:nth-child(3) .custom-modal__btn-actions--save .pvd-button__text s-assigned-wrapper", 113 | "targets": [ 114 | ["css=.custom-modal__btn-actions:nth-child(3) .custom-modal__btn-actions--save .pvd-button__text s-assigned-wrapper", "css:finder"], 115 | ["xpath=//div[@id='pvd-tab-panel-id-730480405543']/s-slot/s-assigned-wrapper/div/div[3]/div[2]/helios-button[2]/s-root/button/div/span/s-slot/s-assigned-wrapper", "xpath:idRelative"], 116 | ["xpath=//helios-button[2]/s-root/button/div/span/s-slot/s-assigned-wrapper", "xpath:position"] 117 | ], 118 | "value": "" 119 | }] 120 | }, { 121 | "id": "208cfed9-1e03-448d-91ad-1364fa16bc02", 122 | "name": "[ Merrill Edge Account Rename ]", 123 | "commands": [{ 124 | "id": "a46221a1-3a6a-4d76-8157-13d8d0d8657d", 125 | "comment": "", 126 | "command": "echo", 127 | "target": "Edge Account Rename Tool has been provided for the public. Fidelity is available for Gold Sponsors. ", 128 | "targets": [], 129 | "value": "" 130 | }, { 131 | "id": "41d2411a-5cd0-4313-a93f-4e12b3be05ff", 132 | "comment": "", 133 | "command": "echo", 134 | "target": "The following has been provided \"as is\", no updates/improvements will be added for this public version. ", 135 | "targets": [], 136 | "value": "" 137 | }, { 138 | "id": "a9a9d601-8f6d-48bc-903b-df9ab9f869ba", 139 | "comment": "", 140 | "command": "open", 141 | "target": "https://olui2.fs.ml.com/CSProfileSettings/DisplayOptions.aspx", 142 | "targets": [], 143 | "value": "" 144 | }, { 145 | "id": "e55a3a34-13bd-4172-9b77-9d3ab9c2ebe8", 146 | "comment": "Change '15' to the number of your accounts", 147 | "command": "executeScript", 148 | "target": "return Array.from({length: 15}, (_, i) => i);", 149 | "targets": [], 150 | "value": "accounts" 151 | }, { 152 | "id": "9d331980-9f39-42f1-b249-5e76d2eace19", 153 | "comment": "", 154 | "command": "forEach", 155 | "target": "accounts", 156 | "targets": [], 157 | "value": "numb" 158 | }, { 159 | "id": "a539fb01-e5b9-4171-9028-94ff59ac7a5b", 160 | "comment": "", 161 | "command": "pause", 162 | "target": "450", 163 | "targets": [], 164 | "value": "" 165 | }, { 166 | "id": "6d6f70da-b800-4383-a2f5-8988507a9aaa", 167 | "comment": "", 168 | "command": "click", 169 | "target": "id=rename${numb}", 170 | "targets": [], 171 | "value": "" 172 | }, { 173 | "id": "a270ce55-d46d-4a05-8c52-25e1ed2e3ccd", 174 | "comment": "", 175 | "command": "click", 176 | "target": "id=input${numb}", 177 | "targets": [ 178 | ["id=input0", "id"], 179 | ["css=#input0", "css:finder"], 180 | ["xpath=//input[@id='input0']", "xpath:attributes"], 181 | ["xpath=//div[@id='dvID0']/input", "xpath:idRelative"], 182 | ["xpath=//td/div/div/div/div/input", "xpath:position"] 183 | ], 184 | "value": "" 185 | }, { 186 | "id": "e5307381-1311-4c11-82e5-e7fd3502c02c", 187 | "comment": "", 188 | "command": "type", 189 | "target": "id=input${numb}", 190 | "targets": [ 191 | ["id=input0", "id"], 192 | ["css=#input0", "css:finder"], 193 | ["xpath=//input[@id='input0']", "xpath:attributes"], 194 | ["xpath=//div[@id='dvID0']/input", "xpath:idRelative"], 195 | ["xpath=//td/div/div/div/div/input", "xpath:position"] 196 | ], 197 | "value": "${numb}-CMA-EDGE" 198 | }, { 199 | "id": "22dab363-342b-42d1-9981-c386c8cfa8f7", 200 | "comment": "", 201 | "command": "click", 202 | "target": "id=rename${numb}", 203 | "targets": [ 204 | ["id=rename0", "id"], 205 | ["css=#rename0", "css:finder"], 206 | ["xpath=//a[@id='rename0']", "xpath:attributes"], 207 | ["xpath=//tr[@id='GEGrid1_tr_0_0']/td[2]/div/div/div/a", "xpath:idRelative"], 208 | ["xpath=//a[contains(@href, \"javascript:Rename('input0','rename0',0,'');\")]", "xpath:href"], 209 | ["xpath=//td[2]/div/div/div/a", "xpath:position"] 210 | ], 211 | "value": "" 212 | }, { 213 | "id": "32b99ebd-9b74-43f6-a086-5c8bc427e207", 214 | "comment": "", 215 | "command": "echo", 216 | "target": "${numb} Account Name Updated", 217 | "targets": [], 218 | "value": "" 219 | }, { 220 | "id": "2871e4c8-e4d8-4533-9898-7855363dcb75", 221 | "comment": "", 222 | "command": "end", 223 | "target": "", 224 | "targets": [], 225 | "value": "" 226 | }, { 227 | "id": "eacc5aff-c1a9-4e93-ba52-54ba6d6c28e3", 228 | "comment": "", 229 | "command": "click", 230 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ctl00_btnSave", 231 | "targets": [ 232 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ctl00_btnSave", "id"], 233 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ctl00_btnSave", "css:finder"], 234 | ["xpath=//span[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ctl00_btnSave']", "xpath:attributes"], 235 | ["xpath=//a[@id='lnkSaveDisplayOptions']/span", "xpath:idRelative"], 236 | ["xpath=//p/a[2]/span", "xpath:position"], 237 | ["xpath=//span[contains(.,'Save Changes')]", "xpath:innerText"] 238 | ], 239 | "value": "" 240 | }, { 241 | "id": "52e9e6c4-dd85-49c2-98c3-07584b414080", 242 | "comment": "", 243 | "command": "open", 244 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 245 | "targets": [], 246 | "value": "" 247 | }, { 248 | "id": "22a0ec9f-5b9c-4523-a669-779bbcf70018", 249 | "comment": "", 250 | "command": "echo", 251 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 252 | "targets": [], 253 | "value": "" 254 | }] 255 | }, { 256 | "id": "a8abba1b-36b1-4572-83e7-52e5bee21c54", 257 | "name": "- Vanguard Withdrawal Tool", 258 | "commands": [{ 259 | "id": "ae22a01c-0ea3-4818-b62e-a17c608cda2f", 260 | "comment": "", 261 | "command": "echo", 262 | "target": "Vanguard Automated Withdrawal Tool has been provided for the public. Fidelity, Chase, Schwab, Wellstrade is available for Gold Sponsors. ", 263 | "targets": [], 264 | "value": "" 265 | }, { 266 | "id": "cafb2351-d9a4-42a6-a3a3-b4fa74ce452b", 267 | "comment": "", 268 | "command": "echo", 269 | "target": "The following has been provided \"as is\", no updates/improvements will be added for this public version. ", 270 | "targets": [], 271 | "value": "" 272 | }, { 273 | "id": "a2d826e6-25a3-483d-99c6-d17e93d395cd", 274 | "comment": "", 275 | "command": "open", 276 | "target": "https://holdings.web.vanguard.com/", 277 | "targets": [], 278 | "value": "" 279 | }, { 280 | "id": "fa25d989-aa83-4f16-97c9-8bd9efd5ad74", 281 | "comment": "", 282 | "command": "executeScript", 283 | "target": "return 50;", 284 | "targets": [], 285 | "value": "minimum_balance" 286 | }, { 287 | "id": "ddf1d6c8-02ad-4a5c-8026-8811aeaf65d5", 288 | "comment": "", 289 | "command": "executeScript", 290 | "target": "return 20;", 291 | "targets": [], 292 | "value": "minimum_withdrawl" 293 | }, { 294 | "id": "a4ac8ae3-ff82-45c4-b3cc-b278c29d18ff", 295 | "comment": "DRY mode: 1= enabled, 0= disabled", 296 | "command": "store", 297 | "target": "0", 298 | "targets": [], 299 | "value": "DRY" 300 | }, { 301 | "id": "f09c6cb6-afda-427d-8b23-cd98a1142610", 302 | "comment": "", 303 | "command": "click", 304 | "target": "xpath=//span[contains(.,'Expand all accounts')]", 305 | "targets": [ 306 | ["css=.c11n-link--primary:nth-child(1) > .c11n-link__content", "css:finder"], 307 | ["xpath=//main[@id='app-main-content']/ss-lib-page-layout/section/div[2]/div/div[4]/div/app-holdings/div/div/button/span", "xpath:idRelative"], 308 | ["xpath=//app-holdings/div/div/button/span", "xpath:position"], 309 | ["xpath=//span[contains(.,'Expand all accounts')]", "xpath:innerText"] 310 | ], 311 | "value": "" 312 | }, { 313 | "id": "8416a05b-1a95-4d6a-96e5-486ede46e753", 314 | "comment": "", 315 | "command": "pause", 316 | "target": "2000", 317 | "targets": [], 318 | "value": "" 319 | }, { 320 | "id": "e153750d-2ce3-49eb-acb4-5f5c642eacd3", 321 | "comment": "", 322 | "command": "executeScript", 323 | "target": "const accordions = document.querySelectorAll('c11n-accordion'); const filteredAccordions = Array.from(accordions).filter(accordion => { const headingText = accordion.querySelector('span.c11n-accordion__heading span').textContent; return headingText.includes('Brokerage Account') && !headingText.includes('IRA'); }); const hrefList = []; filteredAccordions.forEach(accordion => { const anchors = accordion.querySelectorAll('a.c11n-nav-overflow__a.c11n-menu__item'); anchors.forEach(anchor => { const href = anchor.getAttribute('href'); if (href.includes('ExchangeFunds') && href.endsWith('onRetirementMode=true')) { hrefList.push(href); } }); }); return (hrefList);", 324 | "targets": [], 325 | "value": "list" 326 | }, { 327 | "id": "169bae20-fba1-490b-a753-8e4327707f67", 328 | "comment": "", 329 | "command": "executeScript", 330 | "target": "return 1;", 331 | "targets": [], 332 | "value": "i" 333 | }, { 334 | "id": "7ce54612-6c6b-476f-9b1b-2e451b73d6f2", 335 | "comment": "", 336 | "command": "echo", 337 | "target": "${list}", 338 | "targets": [], 339 | "value": "" 340 | }, { 341 | "id": "373b33f1-52e4-4121-b1e8-c37c54557b71", 342 | "comment": "", 343 | "command": "forEach", 344 | "target": "list", 345 | "targets": [], 346 | "value": "url" 347 | }, { 348 | "id": "1dc8ea4a-6217-4527-9590-ad8fd7ba3153", 349 | "comment": "", 350 | "command": "if", 351 | "target": "${i} == 1", 352 | "targets": [], 353 | "value": "" 354 | }, { 355 | "id": "af96b854-9ccf-4e0b-a736-19fc42c200ee", 356 | "comment": "", 357 | "command": "echo", 358 | "target": "Skipping first account. ", 359 | "targets": [], 360 | "value": "" 361 | }, { 362 | "id": "ecc0458c-fb38-49f9-9427-d0ad08c26992", 363 | "comment": "", 364 | "command": "executeScript", 365 | "target": "return ${i} + 1;", 366 | "targets": [], 367 | "value": "i" 368 | }, { 369 | "id": "50777c07-bb9a-43e3-9103-9840a3cafdad", 370 | "comment": "", 371 | "command": "else", 372 | "target": "", 373 | "targets": [], 374 | "value": "" 375 | }, { 376 | "id": "b9344dc5-5052-4593-b9c3-abeed484bec2", 377 | "comment": "", 378 | "command": "open", 379 | "target": "${url}", 380 | "targets": [], 381 | "value": "" 382 | }, { 383 | "id": "c9241ece-4b34-46e8-92b3-4024cca23c4c", 384 | "comment": "", 385 | "command": "click", 386 | "target": "xpath=//span[2]/label/input", 387 | "targets": [ 388 | ["xpath=//span[2]/label/input", "xpath:position"] 389 | ], 390 | "value": "" 391 | }, { 392 | "id": "62ed68ef-6ba4-42fa-8151-ca79cdce889a", 393 | "comment": "", 394 | "command": "storeText", 395 | "target": "xpath=/html/body/div[2]/div[6]/span[1]/div/div/div/span/form/span[2]/div/div[5]/span/div/span/div/span/span[1]/span[${i}]/div/div/div[2]/div/span/div/span/span[1]/span/span[1]/table/tbody/tr[2]/td[3]/span/span[1]/span/span[1]/span", 396 | "targets": [], 397 | "value": "balance" 398 | }, { 399 | "id": "235ffce6-b234-4647-8e50-e978366d4c63", 400 | "comment": "", 401 | "command": "executeScript", 402 | "target": "var balance = ${balance}; var minAmountToKeep = ${minimum_balance}; var cleanedBalance = parseFloat(balance.replace(/[$,]/g, '')); var amountToWithdraw = cleanedBalance - minAmountToKeep; amountToWithdraw = Math.max(0, amountToWithdraw); return (amountToWithdraw - 0.05).toFixed(2);", 403 | "targets": [], 404 | "value": "amount" 405 | }, { 406 | "id": "dc80db2a-2c91-48ed-abce-2dc274ee19b3", 407 | "comment": "", 408 | "command": "if", 409 | "target": "${amount} > 0 && ${amount} > ${minimum_withdrawl}", 410 | "targets": [], 411 | "value": "" 412 | }, { 413 | "id": "ab6f3dea-9be7-4625-92d1-f139d9be0911", 414 | "comment": "", 415 | "command": "pause", 416 | "target": "1250", 417 | "targets": [], 418 | "value": "" 419 | }, { 420 | "id": "6ab8113f-65ef-4067-a833-72a3b873e12f", 421 | "comment": "", 422 | "command": "storeXpathCount", 423 | "target": "xpath=//span[3]/input", 424 | "targets": [], 425 | "value": "drop_one" 426 | }, { 427 | "id": "6895e166-2207-4164-830f-0f564d408963", 428 | "comment": "", 429 | "command": "storeXpathCount", 430 | "target": "xpath=//span[2]/span[3]/input", 431 | "targets": [], 432 | "value": "drop_two" 433 | }, { 434 | "id": "1581f6d4-8676-4cb3-a1eb-e9eedbd23128", 435 | "comment": "", 436 | "command": "if", 437 | "target": "${drop_one} == 1", 438 | "targets": [], 439 | "value": "" 440 | }, { 441 | "id": "6705e53a-2184-4bf3-a966-76cf897f3bd5", 442 | "comment": "", 443 | "command": "click", 444 | "target": "xpath=//span[3]/input", 445 | "targets": [ 446 | ["xpath=//span[3]/input", "xpath:position"] 447 | ], 448 | "value": "" 449 | }, { 450 | "id": "41f090ea-7dfd-4c08-afde-2b18416e6e92", 451 | "comment": "", 452 | "command": "sendKeys", 453 | "target": "xpath=//span[3]/input", 454 | "targets": [ 455 | ["id=buysellForm:dollarInputAmountsellAccount0559423304152718", "id"], 456 | ["name=buysellForm:dollarInputAmountsellAccount0559423304152718", "name"], 457 | ["css=#buysellForm\\3A dollarInputAmountsellAccount0559423304152718", "css:finder"], 458 | ["xpath=//input[@id='buysellForm:dollarInputAmountsellAccount0559423304152718']", "xpath:attributes"], 459 | ["xpath=//span[@id='comp-buysellForm:dollarInputAmountsellAccount0559423304152718']/span[3]/input", "xpath:idRelative"], 460 | ["xpath=//span[3]/input", "xpath:position"] 461 | ], 462 | "value": "${amount}" 463 | }, { 464 | "id": "5cd38680-412f-4f9b-8c00-1159281b19a1", 465 | "comment": "", 466 | "command": "elseIf", 467 | "target": "${drop_two} == 1", 468 | "targets": [], 469 | "value": "" 470 | }, { 471 | "id": "3027dbd3-f849-4349-b19a-7ea50d10faff", 472 | "comment": "", 473 | "command": "click", 474 | "target": "xpath=//span[2]/span[3]/input", 475 | "targets": [ 476 | ["id=buysellForm:dollarInputAmountsellAccount3580522330121557", "id"], 477 | ["name=buysellForm:dollarInputAmountsellAccount3580522330121557", "name"], 478 | ["css=#buysellForm\\3A dollarInputAmountsellAccount3580522330121557", "css:finder"], 479 | ["xpath=//input[@id='buysellForm:dollarInputAmountsellAccount3580522330121557']", "xpath:attributes"], 480 | ["xpath=//span[@id='comp-buysellForm:dollarInputAmountsellAccount3580522330121557']/span[3]/input", "xpath:idRelative"], 481 | ["xpath=//span[2]/span[3]/input", "xpath:position"] 482 | ], 483 | "value": "" 484 | }, { 485 | "id": "1b743396-dfb5-4475-b073-5b4c70b68ab3", 486 | "comment": "", 487 | "command": "sendKeys", 488 | "target": "xpath=//span[2]/span[3]/input", 489 | "targets": [], 490 | "value": "${amount}" 491 | }, { 492 | "id": "f1f61354-650f-4c8f-8af9-0e33da056967", 493 | "comment": "", 494 | "command": "end", 495 | "target": "", 496 | "targets": [], 497 | "value": "" 498 | }, { 499 | "id": "c764defd-a576-4456-8066-f36e84d38d3e", 500 | "comment": "", 501 | "command": "click", 502 | "target": "id=buysellForm:exchangeEditContinueInput", 503 | "targets": [ 504 | ["id=buysellForm:exchangeEditContinueInput", "id"], 505 | ["css=#buysellForm\\3A exchangeEditContinueInput", "css:finder"], 506 | ["xpath=//input[@id='buysellForm:exchangeEditContinueInput']", "xpath:attributes"], 507 | ["xpath=//span[@id='buysellForm:exchangeEditContinue']/div/span/div/input", "xpath:idRelative"], 508 | ["xpath=//span/table/tbody/tr/td[2]/span/span/span/div/span/div/input", "xpath:position"] 509 | ], 510 | "value": "" 511 | }, { 512 | "id": "253ad9ea-cd6e-4b53-99b0-65e81d58dbe1", 513 | "comment": "", 514 | "command": "pause", 515 | "target": "1900", 516 | "targets": [], 517 | "value": "" 518 | }, { 519 | "id": "23effaa3-cd43-4b1c-99c6-84223f15a1f9", 520 | "comment": "", 521 | "command": "click", 522 | "target": "id=buysellForm:buyAccountNavBox0_headcontent", 523 | "targets": [ 524 | ["id=buysellForm:buyAccountNavBox0_headcontent", "id"], 525 | ["css=#buysellForm\\3A buyAccountNavBox0_headcontent", "css:finder"], 526 | ["xpath=//div[@id='buysellForm:buyAccountNavBox0_headcontent']", "xpath:attributes"], 527 | ["xpath=//div[@id='buysellForm:buyAccountNavBox0_head']/span/div/div", "xpath:idRelative"], 528 | ["xpath=//div[6]/div/span/div/span/div/span/span/span/div/div/div/span/div/div", "xpath:position"] 529 | ], 530 | "value": "" 531 | }, { 532 | "id": "a3468889-1860-4540-9d3d-0c529bb6d374", 533 | "comment": "", 534 | "command": "click", 535 | "target": "xpath=//tr[5]/td/span/span/span/span[2]/label/input", 536 | "targets": [ 537 | ["xpath=//tr[5]/td/span/span/span/span[2]/label/input", "xpath:position"] 538 | ], 539 | "value": "" 540 | }, { 541 | "id": "00e38880-615a-4352-8819-836ff3c949e1", 542 | "comment": "", 543 | "command": "pause", 544 | "target": "1500", 545 | "targets": [], 546 | "value": "" 547 | }, { 548 | "id": "46bd4204-86e0-4a36-87d8-da0a90aca230", 549 | "comment": "", 550 | "command": "click", 551 | "target": "id=buysellForm:exchangeEditBuyContinueInput", 552 | "targets": [ 553 | ["id=buysellForm:exchangeEditBuyContinueInput", "id"], 554 | ["css=#buysellForm\\3A exchangeEditBuyContinueInput", "css:finder"], 555 | ["xpath=//input[@id='buysellForm:exchangeEditBuyContinueInput']", "xpath:attributes"], 556 | ["xpath=//span[@id='buysellForm:exchangeEditBuyContinue']/div/span/div/input", "xpath:idRelative"], 557 | ["xpath=//div[8]/span/span/table/tbody/tr/td/span/span/span/div/span/div/input", "xpath:position"] 558 | ], 559 | "value": "" 560 | }, { 561 | "id": "a4a7c258-be34-4b2b-8923-20435a08e4f3", 562 | "comment": "", 563 | "command": "pause", 564 | "target": "1500", 565 | "targets": [], 566 | "value": "" 567 | }, { 568 | "id": "a4b3efcb-43ea-4281-b62f-894292b83243", 569 | "comment": "", 570 | "command": "storeXpathCount", 571 | "target": "xpath=//*[@id=\"buysellForm:invalidSpecialPayeeInput\"]", 572 | "targets": [], 573 | "value": "error" 574 | }, { 575 | "id": "0d6a9347-6a54-4395-aa5f-bcd3c409752c", 576 | "comment": "", 577 | "command": "if", 578 | "target": "${error} != 1", 579 | "targets": [], 580 | "value": "" 581 | }, { 582 | "id": "5beeb388-7bd1-4916-b260-3e1b6c835492", 583 | "comment": "", 584 | "command": "click", 585 | "target": "xpath=//span[2]/span/span/div/span/div/input", 586 | "targets": [ 587 | ["id=exchangeReviewLayerForm:exchangeConsentAcceptReviewInput", "id"], 588 | ["css=#exchangeReviewLayerForm\\3A exchangeConsentAcceptReviewInput", "css:finder"], 589 | ["xpath=//input[@id='exchangeReviewLayerForm:exchangeConsentAcceptReviewInput']", "xpath:attributes"], 590 | ["xpath=//span[@id='exchangeReviewLayerForm:exchangeConsentAcceptReview']/div/span/div/input", "xpath:idRelative"], 591 | ["xpath=//span[2]/span/span/div/span/div/input", "xpath:position"] 592 | ], 593 | "value": "" 594 | }, { 595 | "id": "86c3ce8c-c283-49b7-8d37-d052731fbe51", 596 | "comment": "", 597 | "command": "if", 598 | "target": "${DRY} != 1", 599 | "targets": [], 600 | "value": "" 601 | }, { 602 | "id": "dde77657-a103-4860-8fda-e886e37ec657", 603 | "comment": "", 604 | "command": "click", 605 | "target": "id=buysellForm:exchangeReviewSubmitInput", 606 | "targets": [ 607 | ["id=buysellForm:exchangeReviewSubmitInput", "id"], 608 | ["css=#buysellForm\\3A exchangeReviewSubmitInput", "css:finder"], 609 | ["xpath=//input[@id='buysellForm:exchangeReviewSubmitInput']", "xpath:attributes"], 610 | ["xpath=//span[@id='buysellForm:exchangeReviewSubmit']/div/span/div/input", "xpath:idRelative"], 611 | ["xpath=//td[2]/span[3]/span/span/div/span/div/input", "xpath:position"] 612 | ], 613 | "value": "" 614 | }, { 615 | "id": "06932125-4b9f-4bc6-897d-622a1ee2ea8d", 616 | "comment": "", 617 | "command": "end", 618 | "target": "", 619 | "targets": [], 620 | "value": "" 621 | }, { 622 | "id": "78a4d771-3319-46d2-b013-383cb7a1baea", 623 | "comment": "", 624 | "command": "end", 625 | "target": "", 626 | "targets": [], 627 | "value": "" 628 | }, { 629 | "id": "ad8ac184-36b8-4ab8-b49a-297dcd7f78eb", 630 | "comment": "", 631 | "command": "else", 632 | "target": "", 633 | "targets": [], 634 | "value": "" 635 | }, { 636 | "id": "6189e3b6-b996-4d6b-8b72-3261a4a8a0db", 637 | "comment": "", 638 | "command": "echo", 639 | "target": "Not enough funds to meet minimum: ${amount}", 640 | "targets": [], 641 | "value": "" 642 | }, { 643 | "id": "0217370a-3a78-4fdd-8a07-03208662f7c7", 644 | "comment": "", 645 | "command": "end", 646 | "target": "", 647 | "targets": [], 648 | "value": "" 649 | }, { 650 | "id": "056efd7d-8363-4662-93bf-f54275740333", 651 | "comment": "", 652 | "command": "executeScript", 653 | "target": "return ${i} + 1;", 654 | "targets": [], 655 | "value": "i" 656 | }, { 657 | "id": "b463577a-3383-45ce-9d72-5dad9e3f1b70", 658 | "comment": "", 659 | "command": "end", 660 | "target": "", 661 | "targets": [], 662 | "value": "" 663 | }, { 664 | "id": "ce2a2800-a015-4ad8-b68e-38a66290845b", 665 | "comment": "", 666 | "command": "end", 667 | "target": "", 668 | "targets": [], 669 | "value": "" 670 | }, { 671 | "id": "3ce7fdb0-bb7d-4363-b02f-6a4da6a72ce7", 672 | "comment": "", 673 | "command": "open", 674 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 675 | "targets": [], 676 | "value": "" 677 | }, { 678 | "id": "ad794090-adf8-4501-87de-d4202869b94b", 679 | "comment": "", 680 | "command": "echo", 681 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 682 | "targets": [], 683 | "value": "" 684 | }] 685 | }], 686 | "suites": [{ 687 | "id": "6d1373e6-7a21-4814-b8c8-e041000d57b3", 688 | "name": "Account Rename Tool", 689 | "persistSession": false, 690 | "parallel": false, 691 | "timeout": 300, 692 | "tests": ["208cfed9-1e03-448d-91ad-1364fa16bc02"] 693 | }, { 694 | "id": "664d0d8b-ed95-4ff5-bc85-0e08c0d9b713", 695 | "name": "Account Withdrawal Tool", 696 | "persistSession": false, 697 | "parallel": false, 698 | "timeout": 300, 699 | "tests": ["a8abba1b-36b1-4572-83e7-52e5bee21c54"] 700 | }], 701 | "urls": ["https://digital.fidelity.com/", "http://localhost/"], 702 | "plugins": [] 703 | } -------------------------------------------------------------------------------- /src/Selenium_IDE/Fidelity_Auto.side: -------------------------------------------------------------------------------- 1 | { 2 | "id": "a249f397-d556-4703-83ee-4aca00e2495d", 3 | "version": "2.0", 4 | "name": "Fidelity", 5 | "url": "https://digital.fidelity.com/ftgw/digital/trade-equity/index/orderEntry", 6 | "tests": [{ 7 | "id": "685c8f77-8fe3-45fc-8e13-51b6c4fea30c", 8 | "name": "+ Fidelity Buy", 9 | "commands": [{ 10 | "id": "15dbef43-b5dd-4baf-8460-bc6b5744cea5", 11 | "comment": "", 12 | "command": "store", 13 | "target": "TICKERHERE", 14 | "targets": [], 15 | "value": "TICKER" 16 | }, { 17 | "id": "51277964-fd77-466b-9595-0617964dbc41", 18 | "comment": "", 19 | "command": "executeScript", 20 | "target": "return 1.50", 21 | "targets": [], 22 | "value": "LIMIT" 23 | }, { 24 | "id": "caf64a5f-ec83-4936-a580-b4afbb74a291", 25 | "comment": "", 26 | "command": "store", 27 | "target": "1", 28 | "targets": [], 29 | "value": "QUANT" 30 | }, { 31 | "id": "69023bbe-e23a-4eda-8928-12096f54902c", 32 | "comment": "", 33 | "command": "store", 34 | "target": "0", 35 | "targets": [], 36 | "value": "index" 37 | }, { 38 | "id": "e62688a7-bc0e-49df-936e-e4e0b203b2f3", 39 | "comment": "", 40 | "command": "executeScript", 41 | "target": "return \"SLICE_TARGET\".trim();", 42 | "targets": [], 43 | "value": "target" 44 | }, { 45 | "id": "99219aba-29c5-4f95-850c-4bfd09bacec2", 46 | "comment": "", 47 | "command": "store", 48 | "target": "0", 49 | "targets": [], 50 | "value": "dynamic" 51 | }, { 52 | "id": "9801549d-8263-49c4-ae31-6228d5e23b0a", 53 | "comment": "", 54 | "command": "if", 55 | "target": "${dynamic} == 0", 56 | "targets": [], 57 | "value": "" 58 | }, { 59 | "id": "0d2f24ca-310d-41b1-9791-c34b9b9b8333", 60 | "comment": "", 61 | "command": "executeScript", 62 | "target": "return [ ['Account','one','here' ], [ 'Account','two','here' ] ];", 63 | "targets": [], 64 | "value": "accounts" 65 | }, { 66 | "id": "b4d25122-e12d-45a5-9fa5-2685605df813", 67 | "comment": "", 68 | "command": "executeScript", 69 | "target": "let accounts = ${accounts}; return accounts[${index}].slice(accounts[${index}].indexOf(${target}) + 1);", 70 | "targets": [], 71 | "value": "list" 72 | }, { 73 | "id": "7336eef1-154e-4739-87d7-e7d82368962f", 74 | "comment": "", 75 | "command": "elseIf", 76 | "target": "${dynamic} == 1", 77 | "targets": [], 78 | "value": "" 79 | }, { 80 | "id": "603b85cd-bfa5-4280-9443-34e73bd550bf", 81 | "comment": "", 82 | "command": "open", 83 | "target": "https://digital.fidelity.com/ftgw/digital/portfolio/summary", 84 | "targets": [], 85 | "value": "" 86 | }, { 87 | "id": "82555785-74d8-4acf-a065-8c13acd3126b", 88 | "comment": "", 89 | "command": "pause", 90 | "target": "2250", 91 | "targets": [], 92 | "value": "" 93 | }, { 94 | "id": "11bc161e-9252-4dfd-899d-8fc8b62c6fde", 95 | "comment": "", 96 | "command": "executeScript", 97 | "target": "const elements = document.getElementsByClassName(\"acct-selector__acct-num\"); const textArray = []; for (let i = 0; i < elements.length; i++) { const text = elements[i].textContent.trim(); textArray.push(text); } return textArray;", 98 | "targets": [], 99 | "value": "accounts" 100 | }, { 101 | "id": "6f903db5-f3db-457f-abbb-669d86c0f14b", 102 | "comment": "", 103 | "command": "executeScript", 104 | "target": "let accounts = ${accounts}; return accounts.slice(accounts.indexOf(${target}) + 1);", 105 | "targets": [], 106 | "value": "list" 107 | }, { 108 | "id": "8ec6b851-da4d-40d8-add8-4cbc86a2d0e8", 109 | "comment": "", 110 | "command": "end", 111 | "target": "", 112 | "targets": [], 113 | "value": "" 114 | }, { 115 | "id": "e43ad2b7-f9b0-4f3b-a8e1-44f2ead58779", 116 | "comment": "", 117 | "command": "executeScript", 118 | "target": "return ${TICKER}.split(\",\");", 119 | "targets": [], 120 | "value": "TICKERS" 121 | }, { 122 | "id": "00b0aa03-8311-4925-9d8e-9a96d8392761", 123 | "comment": "", 124 | "command": "forEach", 125 | "target": "list", 126 | "targets": [], 127 | "value": "account" 128 | }, { 129 | "id": "25adc79e-a66b-4881-8326-2ac24f570ae0", 130 | "comment": "", 131 | "command": "forEach", 132 | "target": "TICKERS", 133 | "targets": [], 134 | "value": "TICK" 135 | }, { 136 | "id": "5c8539cb-a215-423a-b583-c70ab71dd04d", 137 | "comment": "", 138 | "command": "echo", 139 | "target": "STARTING: ${account} BUY Order for ${TICK}", 140 | "targets": [], 141 | "value": "" 142 | }, { 143 | "id": "8b43dcdd-ba19-4ec2-afb3-eae7ae3c87dd", 144 | "comment": "", 145 | "command": "open", 146 | "target": "https://oltx.fidelity.com/ftgw/fbc/oftrade/stockInit?ignoreRedirect=Y&ORDER_TYPE=E&ACCOUNT=${account}&SYMBOL=${TICK}&PRICE_TYPE=L&ORDER_ACTION=B&QTY=${QUANT}&AMOUNT=${LIMIT}&SKIP_ORDER_PREVIEW=Y", 147 | "targets": [], 148 | "value": "" 149 | }, { 150 | "id": "a6324823-db4b-4bf3-8a97-c2bf60761025", 151 | "comment": "", 152 | "command": "click", 153 | "target": "css=#action-buy s-assigned-wrapper", 154 | "targets": [ 155 | ["css=#action-buy s-assigned-wrapper", "css:finder"], 156 | ["xpath=//pvd3-segment[@id='action-buy']/s-root/div/label/s-slot/s-assigned-wrapper", "xpath:idRelative"], 157 | ["xpath=//label/s-slot/s-assigned-wrapper", "xpath:position"] 158 | ], 159 | "value": "" 160 | }, { 161 | "id": "a8fd4168-033f-47e4-89ca-62c6ce227559", 162 | "comment": "", 163 | "command": "click", 164 | "target": "css=#market-no s-slot", 165 | "targets": [ 166 | ["css=#market-no s-slot", "css:finder"], 167 | ["xpath=//pvd3-segment[@id='market-no']/s-root/div/label/s-slot", "xpath:idRelative"], 168 | ["xpath=//div[2]/div[2]/div/div/pvd3-segmented-control/s-root/div/div/s-slot/s-assigned-wrapper/pvd3-segment[2]/s-root/div/label/s-slot", "xpath:position"] 169 | ], 170 | "value": "" 171 | }, { 172 | "id": "ac3b1fa5-f2e4-4d2e-be74-c4067667b3be", 173 | "comment": "", 174 | "command": "waitForElementPresent", 175 | "target": "id=eqt-ordsel-limit-price-label", 176 | "targets": [ 177 | ["id=eqt-ordsel-limit-price-label", "id"], 178 | ["css=#eqt-ordsel-limit-price-label", "css:finder"], 179 | ["xpath=//label[@id='eqt-ordsel-limit-price-label']", "xpath:attributes"], 180 | ["xpath=//div[@id='limit-price']/label", "xpath:idRelative"], 181 | ["xpath=//div[2]/div/label", "xpath:position"], 182 | ["xpath=//label[contains(.,'Limit price')]", "xpath:innerText"] 183 | ], 184 | "value": "30000" 185 | }, { 186 | "id": "5b675ccd-8948-44e3-9adb-12924e894929", 187 | "comment": "", 188 | "command": "click", 189 | "target": "id=eqt-ordsel-limit-price-label", 190 | "targets": [ 191 | ["id=eqt-ordsel-limit-price-label", "id"], 192 | ["css=#eqt-ordsel-limit-price-label", "css:finder"], 193 | ["xpath=//label[@id='eqt-ordsel-limit-price-label']", "xpath:attributes"], 194 | ["xpath=//div[@id='limit-price']/label", "xpath:idRelative"], 195 | ["xpath=//div[2]/div/label", "xpath:position"], 196 | ["xpath=//label[contains(.,'Limit price')]", "xpath:innerText"] 197 | ], 198 | "value": "" 199 | }, { 200 | "id": "9146243c-4f0b-4aee-a6fa-614c7e28a6a5", 201 | "comment": "", 202 | "command": "waitForElementEditable", 203 | "target": "id=eqt-ordsel-limit-price-field", 204 | "targets": [], 205 | "value": "30000" 206 | }, { 207 | "id": "86a77a53-d144-4161-8b7b-395dfad3757f", 208 | "comment": "", 209 | "command": "clickAt", 210 | "target": "id=eqt-ordsel-limit-price-field", 211 | "targets": [], 212 | "value": "" 213 | }, { 214 | "id": "56b5cb2c-9185-4851-9912-f66c6c3a0311", 215 | "comment": "", 216 | "command": "sendKeys", 217 | "target": "id=eqt-ordsel-limit-price-field", 218 | "targets": [], 219 | "value": "${KEY_ENTER}" 220 | }, { 221 | "id": "06379a6f-e464-4f57-9c09-ec95f54708d6", 222 | "comment": "", 223 | "command": "click", 224 | "target": "css=#action-day s-assigned-wrapper", 225 | "targets": [ 226 | ["css=#action-day s-assigned-wrapper", "css:finder"], 227 | ["xpath=//pvd3-segment[@id='action-day']/s-root/div/label/s-slot/s-assigned-wrapper", "xpath:idRelative"], 228 | ["xpath=//div[3]/div/div/pvd3-segmented-control/s-root/div/div/s-slot/s-assigned-wrapper/pvd3-segment/s-root/div/label/s-slot/s-assigned-wrapper", "xpath:position"] 229 | ], 230 | "value": "" 231 | }, { 232 | "id": "e6053b4c-d545-40bd-ac73-f497478841a0", 233 | "comment": "", 234 | "command": "pause", 235 | "target": "1300", 236 | "targets": [], 237 | "value": "" 238 | }, { 239 | "id": "e189cd2d-fabd-452c-985d-d8281ad3c993", 240 | "comment": "", 241 | "command": "executeScript", 242 | "target": "const xpath2 = '/html/body/div[3]/ap122489-ett-component/div/order-entry-base/div/div/div[2]/equity-order-routing/commission/div/div/div[1]/span'; const element2 = document.evaluate(xpath2,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue; return (((element2 && (element2.textContent.includes(\"--\") || element2.textContent.includes(\"--\")))));", 243 | "targets": [], 244 | "value": "error" 245 | }, { 246 | "id": "0f195b32-3c88-47c6-ba96-ea7cbb1f8e0d", 247 | "comment": "", 248 | "command": "if", 249 | "target": "${error}", 250 | "targets": [], 251 | "value": "" 252 | }, { 253 | "id": "4c115915-c9e8-4406-aa39-e5675829f5e6", 254 | "comment": "", 255 | "command": "sendKeys", 256 | "target": "id=eqt-ordsel-limit-price-field", 257 | "targets": [], 258 | "value": "${KEY_ENTER}" 259 | }, { 260 | "id": "59f5b6c9-8fc0-4245-beb2-c36047db443a", 261 | "comment": "", 262 | "command": "click", 263 | "target": "css=#action-gtc s-slot", 264 | "targets": [ 265 | ["css=#action-gtc s-slot", "css:finder"], 266 | ["xpath=//pvd3-segment[@id='action-gtc']/s-root/div/label/s-slot", "xpath:idRelative"], 267 | ["xpath=//div[3]/div/div/pvd3-segmented-control/s-root/div/div/s-slot/s-assigned-wrapper/pvd3-segment[2]/s-root/div/label/s-slot", "xpath:position"] 268 | ], 269 | "value": "" 270 | }, { 271 | "id": "55b2ebbe-aa62-4107-9f09-c1ac60654da6", 272 | "comment": "", 273 | "command": "click", 274 | "target": "css=#action-day s-slot", 275 | "targets": [ 276 | ["css=#action-day s-slot", "css:finder"], 277 | ["xpath=//pvd3-segment[@id='action-day']/s-root/div/label/s-slot", "xpath:idRelative"], 278 | ["xpath=//div[3]/div/div/pvd3-segmented-control/s-root/div/div/s-slot/s-assigned-wrapper/pvd3-segment/s-root/div/label/s-slot", "xpath:position"] 279 | ], 280 | "value": "" 281 | }, { 282 | "id": "36508b0f-58c4-4507-9c95-93c16294290f", 283 | "comment": "", 284 | "command": "end", 285 | "target": "", 286 | "targets": [], 287 | "value": "" 288 | }, { 289 | "id": "5422b4f3-049c-4241-9e92-c3907b96b935", 290 | "comment": "", 291 | "command": "click", 292 | "target": "css=#previewOrderBtn .pvd3-button-root", 293 | "targets": [ 294 | ["css=#previewOrderBtn .pvd3-button-root", "css:finder"], 295 | ["xpath=(//button[@type='button'])[10]", "xpath:attributes"], 296 | ["xpath=//pvd3-button[@id='previewOrderBtn']/s-root/button", "xpath:idRelative"], 297 | ["xpath=//div[2]/div/div/div/pvd3-button/s-root/button", "xpath:position"], 298 | ["xpath=//button[contains(.,'Preview order')]", "xpath:innerText"] 299 | ], 300 | "value": "" 301 | }, { 302 | "id": "ed5e6df8-2812-4466-8c41-e1c0fcc7f471", 303 | "comment": "", 304 | "command": "click", 305 | "target": "id=placeOrderBtn", 306 | "targets": [ 307 | ["id=placeOrderBtn", "id"], 308 | ["css=#placeOrderBtn", "css:finder"], 309 | ["xpath=//button[@id='placeOrderBtn']", "xpath:attributes"], 310 | ["xpath=//div[2]/div/div[3]/div/div/button", "xpath:position"], 311 | ["xpath=//button[contains(.,'Place order')]", "xpath:innerText"] 312 | ], 313 | "value": "" 314 | }, { 315 | "id": "f663fda9-612d-411f-b6de-8ea9ce568d08", 316 | "comment": "", 317 | "command": "echo", 318 | "target": "COMPLETED: ${account} Ordered ${TICK}", 319 | "targets": [], 320 | "value": "" 321 | }, { 322 | "id": "77fa486f-0fe9-4a57-8ad2-b7072275122b", 323 | "comment": "", 324 | "command": "end", 325 | "target": "", 326 | "targets": [], 327 | "value": "" 328 | }, { 329 | "id": "28aae527-b224-4222-89e0-20c979016df3", 330 | "comment": "", 331 | "command": "executeScript", 332 | "target": "return ${count} + 1;", 333 | "targets": [], 334 | "value": "count" 335 | }, { 336 | "id": "96575f14-2574-4f49-b8ca-99e9fe427610", 337 | "comment": "", 338 | "command": "executeScript", 339 | "target": " let totalSteps = ${list}.length * ${TICKERS}.length; let currentAccountIndex = ${list}.indexOf(${account}); let currentTickerIndex = ${TICKERS}.indexOf(${TICK}); let currentStep = (currentAccountIndex * ${TICKERS}.length) + currentTickerIndex + 1; let percentage = (currentStep / totalSteps) * 100; return percentage.toFixed(1);", 340 | "targets": [], 341 | "value": "progress" 342 | }, { 343 | "id": "b34ed3d7-2b62-4d7a-bafd-1187f1ce1b71", 344 | "comment": "", 345 | "command": "echo", 346 | "target": "${account} - ${TICK} DONE: (${progress}%)", 347 | "targets": [], 348 | "value": "" 349 | }, { 350 | "id": "46a53dd0-e413-4d4d-a94f-bd0db92a57a6", 351 | "comment": "", 352 | "command": "end", 353 | "target": "", 354 | "targets": [], 355 | "value": "" 356 | }, { 357 | "id": "d36dfb63-336f-47b3-a866-494e9f8a5509", 358 | "comment": "", 359 | "command": "open", 360 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 361 | "targets": [], 362 | "value": "" 363 | }, { 364 | "id": "b482296e-d59c-4337-8d3c-892af1e97857", 365 | "comment": "", 366 | "command": "echo", 367 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 368 | "targets": [], 369 | "value": "" 370 | }] 371 | }, { 372 | "id": "663b8ae4-3df7-4c2a-b3b1-7b57fe8e7162", 373 | "name": "- Fidelity Sell", 374 | "commands": [{ 375 | "id": "caac9739-def8-4d8b-83e9-eba2cc0bb00a", 376 | "comment": "", 377 | "command": "store", 378 | "target": "TICKERHERE", 379 | "targets": [], 380 | "value": "TICKER" 381 | }, { 382 | "id": "eb3e268d-7156-4904-b0ed-ee0cec1c5ef5", 383 | "comment": "", 384 | "command": "store", 385 | "target": "1", 386 | "targets": [], 387 | "value": "QUANT" 388 | }, { 389 | "id": "3cef2882-9653-4e75-8d1e-6d7be2fae51f", 390 | "comment": "", 391 | "command": "store", 392 | "target": "0", 393 | "targets": [], 394 | "value": "index" 395 | }, { 396 | "id": "45dd1037-8b6b-4c14-85c5-31651477527a", 397 | "comment": "", 398 | "command": "store", 399 | "target": "0", 400 | "targets": [], 401 | "value": "dynamic" 402 | }, { 403 | "id": "85bea692-3a09-4056-9921-27fd1c96586a", 404 | "comment": "", 405 | "command": "executeScript", 406 | "target": "return \"SLICE_TARGET\".trim();", 407 | "targets": [], 408 | "value": "target" 409 | }, { 410 | "id": "f4916055-ed7a-4edf-8d7a-e8e11cbf9af9", 411 | "comment": "", 412 | "command": "if", 413 | "target": "${dynamic} == 0", 414 | "targets": [], 415 | "value": "" 416 | }, { 417 | "id": "32cf33c6-7b71-43eb-878e-63132ea3bbad", 418 | "comment": "", 419 | "command": "executeScript", 420 | "target": "return [ ['Account','one','here' ], [ 'Account','two','here' ] ];", 421 | "targets": [], 422 | "value": "accounts" 423 | }, { 424 | "id": "fa37f085-92aa-4c82-ad20-6d1b0eeda3f4", 425 | "comment": "", 426 | "command": "executeScript", 427 | "target": "let accounts = ${accounts}; return accounts[${index}].slice(accounts[${index}].indexOf(${target}) + 1);", 428 | "targets": [], 429 | "value": "list" 430 | }, { 431 | "id": "96c58f11-23ec-4f13-98ed-e0ebdadf5f63", 432 | "comment": "", 433 | "command": "elseIf", 434 | "target": "${dynamic} == 1", 435 | "targets": [], 436 | "value": "" 437 | }, { 438 | "id": "72a79079-e1e6-40cd-ba46-9e6d97a9b99d", 439 | "comment": "", 440 | "command": "open", 441 | "target": "https://digital.fidelity.com/ftgw/digital/portfolio/summary", 442 | "targets": [], 443 | "value": "" 444 | }, { 445 | "id": "dad67028-0db4-4174-9ed4-04d7bb8ca991", 446 | "comment": "", 447 | "command": "pause", 448 | "target": "1250", 449 | "targets": [], 450 | "value": "" 451 | }, { 452 | "id": "0b0a90ee-681b-496e-8363-e6dbdb40f366", 453 | "comment": "", 454 | "command": "executeScript", 455 | "target": "const elements = document.getElementsByClassName(\"acct-selector__acct-num\"); const textArray = []; for (let i = 0; i < elements.length; i++) { const text = elements[i].textContent.trim(); textArray.push(text); } return textArray;", 456 | "targets": [], 457 | "value": "accounts" 458 | }, { 459 | "id": "6ef5db96-c493-434f-adf6-2e1c51998c59", 460 | "comment": "", 461 | "command": "executeScript", 462 | "target": "let accounts = ${accounts}; return accounts.slice(accounts.indexOf(${target}) + 1);", 463 | "targets": [], 464 | "value": "list" 465 | }, { 466 | "id": "2a97573f-f13d-4cb7-88f2-8cf9e4bff569", 467 | "comment": "", 468 | "command": "end", 469 | "target": "", 470 | "targets": [], 471 | "value": "" 472 | }, { 473 | "id": "e9a1aa9b-6f8f-4c2b-91ee-a0da483ec060", 474 | "comment": "", 475 | "command": "executeScript", 476 | "target": "return ${TICKER}.split(\",\");", 477 | "targets": [], 478 | "value": "TICKERS" 479 | }, { 480 | "id": "cae7b3f1-d9ba-4199-80d1-e7cf817a9587", 481 | "comment": "", 482 | "command": "forEach", 483 | "target": "list", 484 | "targets": [], 485 | "value": "account" 486 | }, { 487 | "id": "8d934b3c-351c-4168-a9db-b174671377b3", 488 | "comment": "", 489 | "command": "forEach", 490 | "target": "TICKERS", 491 | "targets": [], 492 | "value": "TICK" 493 | }, { 494 | "id": "e981fb93-7a4f-41a6-9931-a7d4169dfb48", 495 | "comment": "", 496 | "command": "echo", 497 | "target": "STARTING: ${account} SELL Order for ${TICK}", 498 | "targets": [], 499 | "value": "" 500 | }, { 501 | "id": "f2426a45-a49c-4bfb-940e-f767bc9acadd", 502 | "comment": "", 503 | "command": "open", 504 | "target": "https://oltx.fidelity.com/ftgw/fbc/oftrade/stockInit?ignoreRedirect=Y&ORDER_TYPE=E&ACCOUNT=${account}&SYMBOL=${TICK}&PRICE_TYPE=L&ORDER_ACTION=S&QTY=${QUANT}&AMOUNT=111.03&SKIP_ORDER_PREVIEW=Y", 505 | "targets": [], 506 | "value": "" 507 | }, { 508 | "id": "8d904aa2-ef1b-47e3-94cd-923438578869", 509 | "comment": "", 510 | "command": "click", 511 | "target": "css=#market-yes s-slot", 512 | "targets": [ 513 | ["css=#market-yes s-slot", "css:finder"], 514 | ["xpath=//pvd3-segment[@id='market-yes']/s-root/div/label/s-slot", "xpath:idRelative"], 515 | ["xpath=//div[2]/div[2]/div/div/pvd3-segmented-control/s-root/div/div/s-slot/s-assigned-wrapper/pvd3-segment/s-root/div/label/s-slot", "xpath:position"] 516 | ], 517 | "value": "" 518 | }, { 519 | "id": "3116c469-34c3-426a-ac9f-b2985cb09d2a", 520 | "comment": "", 521 | "command": "pause", 522 | "target": "1800", 523 | "targets": [], 524 | "value": "" 525 | }, { 526 | "id": "6ef49e21-0681-497d-9b98-dc7cade3af4b", 527 | "comment": "", 528 | "command": "click", 529 | "target": "css=#previewOrderBtn .pvd3-button-root", 530 | "targets": [ 531 | ["css=#previewOrderBtn .pvd3-button-root", "css:finder"], 532 | ["xpath=(//button[@type='button'])[10]", "xpath:attributes"], 533 | ["xpath=//pvd3-button[@id='previewOrderBtn']/s-root/button", "xpath:idRelative"], 534 | ["xpath=//div[2]/div/div/div/pvd3-button/s-root/button", "xpath:position"], 535 | ["xpath=//button[contains(.,'Preview order')]", "xpath:innerText"] 536 | ], 537 | "value": "" 538 | }, { 539 | "id": "1a9e06ca-1718-43cc-bfbb-80a4d34dbfed", 540 | "comment": "", 541 | "command": "pause", 542 | "target": "1000", 543 | "targets": [], 544 | "value": "" 545 | }, { 546 | "id": "1d76441d-159d-48fd-a10f-33ffdb7c51a4", 547 | "comment": "", 548 | "command": "executeScript", 549 | "target": "const xpath2 = '/html/body/div[3]/ap122489-ett-component/div/pvd3-modal[1]/s-root/div/div[2]/div/div[2]/s-slot/s-assigned-wrapper/pvd3-inline-alert/s-root/div/div[2]/s-slot/s-assigned-wrapper/div'; const element2 = document.evaluate(xpath2,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue; return (((element2 && (element2.textContent.includes(\"do not have enough shares\") || element2.textContent.includes(\"was not found\")))));", 550 | "targets": [], 551 | "value": "result" 552 | }, { 553 | "id": "18875430-cb78-4906-866c-9649a5a253f3", 554 | "comment": "", 555 | "command": "if", 556 | "target": "${result} == true", 557 | "targets": [], 558 | "value": "" 559 | }, { 560 | "id": "180cd9f0-411b-4c3d-a854-293b9100e734", 561 | "comment": "", 562 | "command": "echo", 563 | "target": "${account}: Selling ${TICK} Failed. Security not in account", 564 | "targets": [], 565 | "value": "" 566 | }, { 567 | "id": "01eed2cc-76bd-4ae9-b284-43683a8a68a4", 568 | "comment": "", 569 | "command": "else", 570 | "target": "", 571 | "targets": [], 572 | "value": "" 573 | }, { 574 | "id": "41b9ccab-907c-4c18-86d5-52be7dd29524", 575 | "comment": "", 576 | "command": "click", 577 | "target": "id=placeOrderBtn", 578 | "targets": [ 579 | ["id=placeOrderBtn", "id"], 580 | ["css=#placeOrderBtn", "css:finder"], 581 | ["xpath=//button[@id='placeOrderBtn']", "xpath:attributes"], 582 | ["xpath=//div[2]/div/div[3]/div/div/button", "xpath:position"], 583 | ["xpath=//button[contains(.,'Place order')]", "xpath:innerText"] 584 | ], 585 | "value": "" 586 | }, { 587 | "id": "728a334b-52c5-4778-8cf0-2a6d4f78b570", 588 | "comment": "", 589 | "command": "echo", 590 | "target": "COMPLETED: ${account} SOLD ${TICK}", 591 | "targets": [], 592 | "value": "" 593 | }, { 594 | "id": "ec8bd0b9-0f6a-41a8-be43-55c14ccae549", 595 | "comment": "", 596 | "command": "end", 597 | "target": "", 598 | "targets": [], 599 | "value": "" 600 | }, { 601 | "id": "e0b4c386-d7b7-4599-b351-4df562a47c10", 602 | "comment": "", 603 | "command": "end", 604 | "target": "", 605 | "targets": [], 606 | "value": "" 607 | }, { 608 | "id": "f2d2f5ed-3958-46ef-994c-7b598d5c5045", 609 | "comment": "", 610 | "command": "executeScript", 611 | "target": " let totalSteps = ${list}.length * ${TICKERS}.length; let currentAccountIndex = ${list}.indexOf(${account}); let currentTickerIndex = ${TICKERS}.indexOf(${TICK}); let currentStep = (currentAccountIndex * ${TICKERS}.length) + currentTickerIndex + 1; let percentage = (currentStep / totalSteps) * 100; return percentage.toFixed(1);", 612 | "targets": [], 613 | "value": "progress" 614 | }, { 615 | "id": "b4bcb70a-ade0-4f13-9235-79720b38ba8a", 616 | "comment": "", 617 | "command": "echo", 618 | "target": "${account} - ${TICK} DONE: (${progress}%)", 619 | "targets": [], 620 | "value": "" 621 | }, { 622 | "id": "a7a9bc6f-039a-41e4-86f6-685b6aefcd0b", 623 | "comment": "", 624 | "command": "end", 625 | "target": "", 626 | "targets": [], 627 | "value": "" 628 | }, { 629 | "id": "efa6e416-e179-42c4-9635-4d622664d9cb", 630 | "comment": "", 631 | "command": "open", 632 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 633 | "targets": [], 634 | "value": "" 635 | }, { 636 | "id": "a91f44a2-631e-48a5-8b09-97a7cca34a45", 637 | "comment": "", 638 | "command": "echo", 639 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 640 | "targets": [], 641 | "value": "" 642 | }] 643 | }, { 644 | "id": "2db8e529-1771-4461-b300-3e5027c85693", 645 | "name": "| Fidelity Login", 646 | "commands": [{ 647 | "id": "efdf0883-1c21-4807-aa8f-c0bcd306d44c", 648 | "comment": "", 649 | "command": "store", 650 | "target": "0", 651 | "targets": [], 652 | "value": "action" 653 | }, { 654 | "id": "41e28a48-36ea-4f21-a522-02ac518528a0", 655 | "comment": "", 656 | "command": "if", 657 | "target": "${action} == 0", 658 | "targets": [], 659 | "value": "" 660 | }, { 661 | "id": "615f1a28-8146-4313-85a7-5693201d753e", 662 | "comment": "", 663 | "command": "open", 664 | "target": "https://digital.fidelity.com/prgw/digital/login/full-page?AuthRedUrl=https://digital.fidelity.com/ftgw/digital/portfolio/summary", 665 | "targets": [], 666 | "value": "" 667 | }, { 668 | "id": "3835fe1f-7ddc-473b-a3a4-55361aa6f6f3", 669 | "comment": "", 670 | "command": "store", 671 | "target": "LOGIN:HERE", 672 | "targets": [], 673 | "value": "FIDELITY_LOGIN" 674 | }, { 675 | "id": "360f7e65-2aba-4ad8-9736-ad54f21795e8", 676 | "comment": "", 677 | "command": "executeScript", 678 | "target": "return ${FIDELITY_LOGIN}.split(\":\");", 679 | "targets": [], 680 | "value": "LOGIN" 681 | }, { 682 | "id": "6db7699f-73a5-47c0-8192-466dfa2f796f", 683 | "comment": "", 684 | "command": "if", 685 | "target": " ${FIDELITY_LOGIN} != \"LOGIN:HERE\"", 686 | "targets": [], 687 | "value": "" 688 | }, { 689 | "id": "acc7743d-174c-48a7-aa06-f12decd6ef30", 690 | "comment": "", 691 | "command": "echo", 692 | "target": "It is not reccomended to use this method to automate a login. Proceed at your own risk.", 693 | "targets": [], 694 | "value": "" 695 | }, { 696 | "id": "d243563e-d248-4edd-ad29-e0f1bfba02e6", 697 | "comment": "", 698 | "command": "click", 699 | "target": "id=userId-input", 700 | "targets": [ 701 | ["id=userId-input", "id"], 702 | ["css=#userId-input", "css:finder"], 703 | ["xpath=//input[@id='userId-input']", "xpath:attributes"], 704 | ["xpath=//div[@id='fs-username-div']/input", "xpath:idRelative"], 705 | ["xpath=//div/input", "xpath:position"] 706 | ], 707 | "value": "" 708 | }, { 709 | "id": "220cfd2d-ddf6-4b3e-afc7-2e5b744eab80", 710 | "comment": "", 711 | "command": "type", 712 | "target": "id=userId-input", 713 | "targets": [ 714 | ["id=userId-input", "id"], 715 | ["css=#userId-input", "css:finder"], 716 | ["xpath=//input[@id='userId-input']", "xpath:attributes"], 717 | ["xpath=//div[@id='fs-username-div']/input", "xpath:idRelative"], 718 | ["xpath=//div/input", "xpath:position"] 719 | ], 720 | "value": "${LOGIN[0]}" 721 | }, { 722 | "id": "bc48fe54-c65a-4ed1-8f31-da30def0db3e", 723 | "comment": "", 724 | "command": "click", 725 | "target": "id=password", 726 | "targets": [ 727 | ["id=password", "id"], 728 | ["name=PIN", "name"], 729 | ["css=#password", "css:finder"], 730 | ["xpath=//input[@id='password']", "xpath:attributes"], 731 | ["xpath=//div[@id='fs-password-div']/input", "xpath:idRelative"], 732 | ["xpath=//div[4]/div/input", "xpath:position"] 733 | ], 734 | "value": "" 735 | }, { 736 | "id": "2abc9cff-361a-4f93-b54f-17ea3d9b066a", 737 | "comment": "", 738 | "command": "type", 739 | "target": "id=password", 740 | "targets": [ 741 | ["id=password", "id"], 742 | ["name=PIN", "name"], 743 | ["css=#password", "css:finder"], 744 | ["xpath=//input[@id='password']", "xpath:attributes"], 745 | ["xpath=//div[@id='fs-password-div']/input", "xpath:idRelative"], 746 | ["xpath=//div[4]/div/input", "xpath:position"] 747 | ], 748 | "value": "${LOGIN[1]}" 749 | }, { 750 | "id": "8b783b4f-a64f-4e05-9e19-f2639b7267e5", 751 | "comment": "", 752 | "command": "click", 753 | "target": "id=fs-login-button", 754 | "targets": [ 755 | ["id=fs-login-button", "id"], 756 | ["css=#fs-login-button", "css:finder"], 757 | ["xpath=//button[@id='fs-login-button']", "xpath:attributes"], 758 | ["xpath=//div[@id='fs-submit-div']/button", "xpath:idRelative"], 759 | ["xpath=//button", "xpath:position"], 760 | ["xpath=//button[contains(.,'Log In')]", "xpath:innerText"] 761 | ], 762 | "value": "" 763 | }, { 764 | "id": "2e50c447-d85c-46ca-8a18-003da8727bae", 765 | "comment": "", 766 | "command": "end", 767 | "target": "", 768 | "targets": [], 769 | "value": "" 770 | }, { 771 | "id": "c4efb77a-dd55-40f4-9a22-1ca6fe134ccd", 772 | "comment": "", 773 | "command": "elseIf", 774 | "target": "${action} == 1", 775 | "targets": [], 776 | "value": "" 777 | }, { 778 | "id": "0ead23bc-2676-440a-9ef5-ccadbc2dfd51", 779 | "comment": "", 780 | "command": "open", 781 | "target": "https://digital.fidelity.com/ftgw/digital/portfolio/summary", 782 | "targets": [], 783 | "value": "" 784 | }, { 785 | "id": "a9ca9b0d-1341-4730-bd16-1d8e96becc8d", 786 | "comment": "", 787 | "command": "executeScript", 788 | "target": "const elements = document.getElementsByClassName(\"acct-selector__acct-num\"); const textArray = []; for (let i = 0; i < elements.length; i++) { const text = elements[i].textContent.trim(); textArray.push(text); } return textArray;", 789 | "targets": [], 790 | "value": "acc_array" 791 | }, { 792 | "id": "5a63d0b1-2c1f-4ae4-8b02-a7f0e93e76e8", 793 | "comment": "", 794 | "command": "echo", 795 | "target": "${acc_array}", 796 | "targets": [], 797 | "value": "" 798 | }, { 799 | "id": "c3657f82-8f80-4a86-84a9-947474233276", 800 | "comment": "", 801 | "command": "end", 802 | "target": "", 803 | "targets": [], 804 | "value": "" 805 | }] 806 | }], 807 | "suites": [{ 808 | "id": "2076ccc1-f9b5-4a8f-a8b7-45c11df5b928", 809 | "name": "Default Suite", 810 | "persistSession": false, 811 | "parallel": false, 812 | "timeout": 300, 813 | "tests": [] 814 | }], 815 | "urls": ["https://digital.fidelity.com/ftgw/digital/trade-equity/index/orderEntry"], 816 | "plugins": [] 817 | } -------------------------------------------------------------------------------- /src/Selenium_IDE/Merrill_Auto.side: -------------------------------------------------------------------------------- 1 | { 2 | "id": "50359473-da1c-4d38-a88f-f19894412df3", 3 | "version": "2.0", 4 | "name": "Merrill Lynch", 5 | "url": "https://olui2.fs.ml.com", 6 | "tests": [{ 7 | "id": "f5052143-1096-43df-9348-77756d35ce51", 8 | "name": "| Login Merrill Edge", 9 | "commands": [{ 10 | "id": "06844a9e-ccc4-4aaf-b22c-f7a0c48738cb", 11 | "comment": "", 12 | "command": "open", 13 | "target": "https://olui2.fs.ml.com/login/signin.aspx?sgt=3", 14 | "targets": [], 15 | "value": "" 16 | }, { 17 | "id": "3f4a83a7-d9c1-4ab7-be05-29db93bc9880", 18 | "comment": "", 19 | "command": "store", 20 | "target": "LOGIN:HERE", 21 | "targets": [], 22 | "value": "MERRILL_LOGIN" 23 | }, { 24 | "id": "081b7e85-5ee5-4fea-aa38-436ac0fcaf7b", 25 | "comment": "", 26 | "command": "if", 27 | "target": "${MERRILL_LOGIN} != \"LOGIN:HERE\"", 28 | "targets": [], 29 | "value": "" 30 | }, { 31 | "id": "548274e2-0661-4d2d-a4ef-41fc72a57791", 32 | "comment": "", 33 | "command": "executeScript", 34 | "target": "var LOGIN = ${MERRILL_LOGIN}; var colonIndex = LOGIN.indexOf(':'); return [ LOGIN.substring(0, colonIndex), LOGIN.substring(colonIndex + 1) ];", 35 | "targets": [], 36 | "value": "LOGIN" 37 | }, { 38 | "id": "75a7478d-c4a7-49f3-9f17-aea42469cfb3", 39 | "comment": "", 40 | "command": "echo", 41 | "target": "It is not reccomended to use this method to automate a login. Proceed at your own risk.", 42 | "targets": [], 43 | "value": "" 44 | }, { 45 | "id": "77c6365b-f3b4-4a6e-a003-12c527d2301b", 46 | "comment": "", 47 | "command": "click", 48 | "target": "id=oid", 49 | "targets": [ 50 | ["id=oid", "id"], 51 | ["name=oid", "name"], 52 | ["css=#oid", "css:finder"], 53 | ["xpath=//input[@id='oid']", "xpath:attributes"], 54 | ["xpath=//section[@id='sign-in-main-content']/div/div/div/div/div/input", "xpath:idRelative"], 55 | ["xpath=//div/div/input", "xpath:position"] 56 | ], 57 | "value": "" 58 | }, { 59 | "id": "47b63be7-c7b4-48c4-98ba-d022b9cc8a22", 60 | "comment": "", 61 | "command": "type", 62 | "target": "id=oid", 63 | "targets": [ 64 | ["id=oid", "id"], 65 | ["name=oid", "name"], 66 | ["css=#oid", "css:finder"], 67 | ["xpath=//input[@id='oid']", "xpath:attributes"], 68 | ["xpath=//section[@id='sign-in-main-content']/div/div/div/div/div/input", "xpath:idRelative"], 69 | ["xpath=//div/div/input", "xpath:position"] 70 | ], 71 | "value": "${LOGIN[0]}" 72 | }, { 73 | "id": "bb593432-d328-4d14-8ce6-d81eb2a59ad5", 74 | "comment": "", 75 | "command": "click", 76 | "target": "id=pass", 77 | "targets": [ 78 | ["id=pass", "id"], 79 | ["name=pass", "name"], 80 | ["css=#pass", "css:finder"], 81 | ["xpath=//input[@id='pass']", "xpath:attributes"], 82 | ["xpath=//section[@id='sign-in-main-content']/div/div[2]/div/div/div/input", "xpath:idRelative"], 83 | ["xpath=//div[2]/div/div/div/input", "xpath:position"] 84 | ], 85 | "value": "" 86 | }, { 87 | "id": "94b15a23-a97f-444e-b14e-e0165604398e", 88 | "comment": "", 89 | "command": "type", 90 | "target": "id=pass", 91 | "targets": [ 92 | ["id=pass", "id"], 93 | ["name=pass", "name"], 94 | ["css=#pass", "css:finder"], 95 | ["xpath=//input[@id='pass']", "xpath:attributes"], 96 | ["xpath=//section[@id='sign-in-main-content']/div/div[2]/div/div/div/input", "xpath:idRelative"], 97 | ["xpath=//div[2]/div/div/div/input", "xpath:position"] 98 | ], 99 | "value": "${LOGIN[1]}" 100 | }, { 101 | "id": "b4806763-133b-48fa-86ae-d967d91797e6", 102 | "comment": "", 103 | "command": "click", 104 | "target": "id=secure-signin-submit", 105 | "targets": [ 106 | ["id=secure-signin-submit", "id"], 107 | ["linkText=Log in", "linkText"], 108 | ["css=#secure-signin-submit", "css:finder"], 109 | ["xpath=//a[contains(text(),'Log in')]", "xpath:link"], 110 | ["xpath=//a[@id='secure-signin-submit']", "xpath:attributes"], 111 | ["xpath=//div[@id='caw-signin']/a", "xpath:idRelative"], 112 | ["xpath=(//a[contains(@href, 'javascript:void(0);')])[4]", "xpath:href"], 113 | ["xpath=//section/div/div/a", "xpath:position"] 114 | ], 115 | "value": "" 116 | }, { 117 | "id": "cc571bf3-cc61-45d7-a246-4915bfb18df9", 118 | "comment": "", 119 | "command": "mouseOver", 120 | "target": "xpath=//div[3]/div/span/div/div[2]/a", 121 | "targets": [ 122 | ["id=me_cs_lo_oth_529_001_020123", "id"], 123 | ["name=me_cs_lo_oth_529_001_020123", "name"], 124 | ["css=#me_cs_lo_oth_529_001_020123", "css:finder"], 125 | ["xpath=//a[@id='me_cs_lo_oth_529_001_020123']", "xpath:attributes"], 126 | ["xpath=//div[@id='ContentPH01']/a", "xpath:idRelative"], 127 | ["xpath=//div[3]/div/span/div/div[2]/a", "xpath:position"] 128 | ], 129 | "value": "" 130 | }, { 131 | "id": "23a34551-84da-4d4d-8403-9d7c562923d1", 132 | "comment": "", 133 | "command": "mouseOut", 134 | "target": "id=me_cs_lo_oth_529_001_020123", 135 | "targets": [ 136 | ["id=me_cs_lo_oth_529_001_020123", "id"], 137 | ["name=me_cs_lo_oth_529_001_020123", "name"], 138 | ["css=#me_cs_lo_oth_529_001_020123", "css:finder"], 139 | ["xpath=//a[@id='me_cs_lo_oth_529_001_020123']", "xpath:attributes"], 140 | ["xpath=//div[@id='ContentPH01']/a", "xpath:idRelative"], 141 | ["xpath=//div[3]/div/span/div/div[2]/a", "xpath:position"] 142 | ], 143 | "value": "" 144 | }, { 145 | "id": "d78c5455-4a58-4c4e-a437-82ac0cab5955", 146 | "comment": "", 147 | "command": "end", 148 | "target": "", 149 | "targets": [], 150 | "value": "" 151 | }] 152 | }, { 153 | "id": "abeb29df-f535-4ffd-815a-1b73fdc45d16", 154 | "name": "- Sell Merrill Edge", 155 | "commands": [{ 156 | "id": "edc50185-b08e-4814-8299-4b98a1cfd2c2", 157 | "comment": "", 158 | "command": "store", 159 | "target": "TICKERHERE", 160 | "targets": [], 161 | "value": "TICKER" 162 | }, { 163 | "id": "7b7eb3a6-0155-4205-9b10-78f5e14e07cc", 164 | "comment": "", 165 | "command": "store", 166 | "target": "1", 167 | "targets": [], 168 | "value": "dynamic" 169 | }, { 170 | "id": "b99c300c-2f96-4a9a-ac45-c8e71c5bfe8f", 171 | "comment": "", 172 | "command": "store", 173 | "target": "1", 174 | "targets": [], 175 | "value": "QUANTITY" 176 | }, { 177 | "id": "f52795f8-b859-4ebc-927f-43b691e5245f", 178 | "comment": "", 179 | "command": "executeScript", 180 | "target": "return \"-1\"", 181 | "targets": [], 182 | "value": "target" 183 | }, { 184 | "id": "ca063ef4-3d2a-4269-9bbb-ef422d80af81", 185 | "comment": "", 186 | "command": "if", 187 | "target": "${dynamic} == 0", 188 | "targets": [], 189 | "value": "" 190 | }, { 191 | "id": "df8d591c-f63e-4e4f-9aa3-d7ed1d75a0e1", 192 | "comment": "", 193 | "command": "executeScript", 194 | "target": "return Array.from({length: 50}, (_, i) => i + 1);", 195 | "targets": [], 196 | "value": "accounts" 197 | }, { 198 | "id": "0ba3e63e-53fe-434b-91c8-c8146a202b40", 199 | "comment": "", 200 | "command": "elseIf", 201 | "target": "${dynamic} == 1", 202 | "targets": [], 203 | "value": "" 204 | }, { 205 | "id": "8e5a48b3-85e2-43fa-a34b-2618b5c0dc30", 206 | "comment": "", 207 | "command": "open", 208 | "target": "https://olui2.fs.ml.com/TFPSummary/PortfolioSimpleView.aspx", 209 | "targets": [], 210 | "value": "" 211 | }, { 212 | "id": "34731fef-9d1f-48d8-ab9d-dc1611a79891", 213 | "comment": "", 214 | "command": "executeScript", 215 | "target": "const optionElements = document.querySelectorAll('.nwal__account-item-info'); return optionElements.length -1;", 216 | "targets": [], 217 | "value": "len_accounts" 218 | }, { 219 | "id": "0696c68e-c388-47f4-97e4-e892bd58566b", 220 | "comment": "", 221 | "command": "executeScript", 222 | "target": "return Array.from({length: ${len_accounts}}, (_, i) => i + 1);", 223 | "targets": [], 224 | "value": "accounts" 225 | }, { 226 | "id": "c48aa6dd-5436-475b-9305-caf9297bf3df", 227 | "comment": "", 228 | "command": "end", 229 | "target": "", 230 | "targets": [], 231 | "value": "" 232 | }, { 233 | "id": "d6f845c7-fe9e-49cf-8e15-dc35471a2e01", 234 | "comment": "", 235 | "command": "executeScript", 236 | "target": "return ${accounts}.slice(${accounts}.indexOf(${target}) + 1);", 237 | "targets": [], 238 | "value": "list" 239 | }, { 240 | "id": "623d0c31-c4ac-47b3-abd8-6b770324d596", 241 | "comment": "", 242 | "command": "executeScript", 243 | "target": "return 0;", 244 | "targets": [], 245 | "value": "count" 246 | }, { 247 | "id": "9b04dfeb-83ed-456b-b6c0-65dd36180f0d", 248 | "comment": "", 249 | "command": "executeScript", 250 | "target": "return ${TICKER}.split(\",\");", 251 | "targets": [], 252 | "value": "TICKERS" 253 | }, { 254 | "id": "3a63b83e-108c-4d71-839c-2376db962aed", 255 | "comment": "", 256 | "command": "forEach", 257 | "target": "list", 258 | "targets": [], 259 | "value": "account" 260 | }, { 261 | "id": "e5235dee-3e04-41bd-b247-2e7bfd9f664e", 262 | "comment": "", 263 | "command": "forEach", 264 | "target": "TICKERS", 265 | "targets": [], 266 | "value": "TICK" 267 | }, { 268 | "id": "b9d96e21-415a-451c-b6ad-e915e7eada4e", 269 | "comment": "", 270 | "command": "open", 271 | "target": "https://olui2.fs.ml.com/Equities/OrderEntry.aspx?as_cd=1.1.1.${account}", 272 | "targets": [], 273 | "value": "" 274 | }, { 275 | "id": "b5349b9b-b4b8-4168-a18b-0c68959a90f8", 276 | "comment": "", 277 | "command": "waitForElementPresent", 278 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", 279 | "targets": [], 280 | "value": "30000" 281 | }, { 282 | "id": "c47c5c83-f31b-4148-94eb-2b0027deb90c", 283 | "comment": "", 284 | "command": "click", 285 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", 286 | "targets": [ 287 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", "id"], 288 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$ddlOrderType", "name"], 289 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", "css:finder"], 290 | ["xpath=//select[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType']", "xpath:attributes"], 291 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div/select", "xpath:idRelative"], 292 | ["xpath=//select", "xpath:position"] 293 | ], 294 | "value": "" 295 | }, { 296 | "id": "0c4d6430-dbed-465c-9f92-a9bef6e3c3b5", 297 | "comment": "", 298 | "command": "select", 299 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", 300 | "targets": [], 301 | "value": "label=Sell" 302 | }, { 303 | "id": "2c93c939-8da3-44a1-9014-4ed9ddce2fc2", 304 | "comment": "", 305 | "command": "waitForElementEditable", 306 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 307 | "targets": [], 308 | "value": "30000" 309 | }, { 310 | "id": "c034afb7-d686-40a4-8df6-e68406846b54", 311 | "comment": "", 312 | "command": "click", 313 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 314 | "targets": [ 315 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "id"], 316 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtSymbol", "name"], 317 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "css:finder"], 318 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol']", "xpath:attributes"], 319 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div[2]/input", "xpath:idRelative"], 320 | ["xpath=//div[2]/div[2]/input", "xpath:position"] 321 | ], 322 | "value": "" 323 | }, { 324 | "id": "83f701e2-5cc0-4d32-bbc2-f9a301633ee5", 325 | "comment": "", 326 | "command": "type", 327 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 328 | "targets": [ 329 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "id"], 330 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtSymbol", "name"], 331 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "css:finder"], 332 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol']", "xpath:attributes"], 333 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div[2]/input", "xpath:idRelative"], 334 | ["xpath=//div[2]/div[2]/input", "xpath:position"] 335 | ], 336 | "value": "${TICK}" 337 | }, { 338 | "id": "e4767833-1389-42cb-8a8b-304f54577d29", 339 | "comment": "", 340 | "command": "type", 341 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 342 | "targets": [ 343 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "id"], 344 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtSymbol", "name"], 345 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "css:finder"], 346 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol']", "xpath:attributes"], 347 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div[2]/input", "xpath:idRelative"], 348 | ["xpath=//div[2]/div[2]/input", "xpath:position"] 349 | ], 350 | "value": "${TICK}" 351 | }, { 352 | "id": "2233170d-7f72-49bb-9b85-aeb9e2b63660", 353 | "comment": "", 354 | "command": "sendKeys", 355 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 356 | "targets": [], 357 | "value": "${KEY_ENTER}" 358 | }, { 359 | "id": "4f567fd7-9d6b-4169-b8cd-26fbd835fa73", 360 | "comment": "", 361 | "command": "waitForElementEditable", 362 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", 363 | "targets": [], 364 | "value": "30000" 365 | }, { 366 | "id": "61971ee3-072d-4e36-889f-40f7569d0c53", 367 | "comment": "", 368 | "command": "click", 369 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", 370 | "targets": [ 371 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "id"], 372 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtQuantity", "name"], 373 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "css:finder"], 374 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity']", "xpath:attributes"], 375 | ["xpath=//div[@id='SellAmtPanel']/div[2]/div/input", "xpath:idRelative"], 376 | ["xpath=//div[3]/div[2]/div/input", "xpath:position"] 377 | ], 378 | "value": "" 379 | }, { 380 | "id": "1c6d0b8a-9cc9-4087-8c15-97a19ec253e1", 381 | "comment": "", 382 | "command": "type", 383 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", 384 | "targets": [ 385 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "id"], 386 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtQuantity", "name"], 387 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "css:finder"], 388 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity']", "xpath:attributes"], 389 | ["xpath=//div[@id='SellAmtPanel']/div[2]/div/input", "xpath:idRelative"], 390 | ["xpath=//div[3]/div[2]/div/input", "xpath:position"] 391 | ], 392 | "value": "${QUANTITY}" 393 | }, { 394 | "id": "57c6711d-cea8-4f61-a5d3-1fc45ea97bf3", 395 | "comment": "", 396 | "command": "pause", 397 | "target": "750", 398 | "targets": [], 399 | "value": "" 400 | }, { 401 | "id": "bdd4780e-8d5a-42b8-8c97-dc7c5bb402c0", 402 | "comment": "", 403 | "command": "click", 404 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", 405 | "targets": [ 406 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", "id"], 407 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$ddPriceType", "name"], 408 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", "css:finder"], 409 | ["xpath=//select[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType']", "xpath:attributes"], 410 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trThirdSection']/div/select", "xpath:idRelative"], 411 | ["xpath=//div[3]/div/select", "xpath:position"] 412 | ], 413 | "value": "" 414 | }, { 415 | "id": "7c5f1eb7-5db7-40a7-80d1-1eee835fe6ee", 416 | "comment": "", 417 | "command": "select", 418 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", 419 | "targets": [], 420 | "value": "label=Market" 421 | }, { 422 | "id": "0d2cd391-cc3f-4609-930a-556019ef06d1", 423 | "comment": "", 424 | "command": "click", 425 | "target": "xpath=//a[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_btnReviewOrder']/span", 426 | "targets": [ 427 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_resxlblOrderPreviewText", "id"], 428 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_resxlblOrderPreviewText", "css:finder"], 429 | ["xpath=//span[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_resxlblOrderPreviewText']", "xpath:attributes"], 430 | ["xpath=//a[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_btnReviewOrder']/span", "xpath:idRelative"], 431 | ["xpath=//div[4]/div[2]/div[2]/div[2]/a/span", "xpath:position"] 432 | ], 433 | "value": "" 434 | }, { 435 | "id": "7310e92a-c055-41fa-a7cd-c2d5a99977d4", 436 | "comment": "", 437 | "command": "pause", 438 | "target": "750", 439 | "targets": [], 440 | "value": "" 441 | }, { 442 | "id": "1646de39-6ee6-4ee4-9334-a15c6388ce0b", 443 | "comment": "", 444 | "command": "executeScript", 445 | "target": "const xpath2 = '/html/body/form/div[10]/div[2]/div[2]/main/div/div[3]/div[3]/div[1]/div[3]/div/div[2]/div'; const element2 = document.evaluate(xpath2,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue; return (((element2 && (element2.textContent.includes(\"is not held in this account.\") || element2.textContent.includes(\"review your\")))));", 446 | "targets": [], 447 | "value": "noPos" 448 | }, { 449 | "id": "afbbc894-43e5-466b-a782-c8a69d0419b3", 450 | "comment": "", 451 | "command": "if", 452 | "target": "${noPos}", 453 | "targets": [], 454 | "value": "" 455 | }, { 456 | "id": "ae189c26-cbff-460a-a4eb-5b23429e52b0", 457 | "comment": "", 458 | "command": "echo", 459 | "target": "No position for ${TICK} on ${account}", 460 | "targets": [], 461 | "value": "" 462 | }, { 463 | "id": "72c96d28-da2c-429e-9b26-dd9ab5ad5911", 464 | "comment": "", 465 | "command": "else", 466 | "target": "", 467 | "targets": [], 468 | "value": "" 469 | }, { 470 | "id": "6c6cbb17-51db-4e5f-8459-2d7347b38853", 471 | "comment": "", 472 | "command": "click", 473 | "target": "xpath=//span[contains(.,'Submit Order')]", 474 | "targets": [ 475 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_EquitiesResourceLabel2", "id"], 476 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_EquitiesResourceLabel2", "css:finder"], 477 | ["xpath=//span[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_EquitiesResourceLabel2']", "xpath:attributes"], 478 | ["xpath=//a[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_btnSubmit']/span", "xpath:idRelative"], 479 | ["xpath=//div[12]/a/span", "xpath:position"], 480 | ["xpath=//span[contains(.,'Submit Order')]", "xpath:innerText"] 481 | ], 482 | "value": "" 483 | }, { 484 | "id": "1a7b5e24-57de-46e4-820e-1dd00e0dba6b", 485 | "comment": "", 486 | "command": "echo", 487 | "target": "Sell ${TICK} on acct ${account} ran!", 488 | "targets": [], 489 | "value": "" 490 | }, { 491 | "id": "03b43bb7-2f9f-4a65-9ab0-3bfea940f8ac", 492 | "comment": "", 493 | "command": "end", 494 | "target": "", 495 | "targets": [], 496 | "value": "" 497 | }, { 498 | "id": "30caf639-cf31-4c69-9967-2ac872694b49", 499 | "comment": "", 500 | "command": "end", 501 | "target": "", 502 | "targets": [], 503 | "value": "" 504 | }, { 505 | "id": "b3bd5cda-7887-40b0-8f44-64b18026afd9", 506 | "comment": "", 507 | "command": "executeScript", 508 | "target": "return ${count} + 1;", 509 | "targets": [], 510 | "value": "count" 511 | }, { 512 | "id": "5a2a7dd4-7a3d-46b2-bec5-6b9660b3454e", 513 | "comment": "", 514 | "command": "executeScript", 515 | "target": "let percentage = (${count} / ${list}.length) * 100; return percentage.toFixed(1);", 516 | "targets": [], 517 | "value": "progress" 518 | }, { 519 | "id": "4d74eddf-6b51-495e-a3e0-be0bee1e7fad", 520 | "comment": "", 521 | "command": "echo", 522 | "target": "Counter Progress ${count}: (${progress}%)", 523 | "targets": [], 524 | "value": "" 525 | }, { 526 | "id": "a4a9a2e5-b295-4776-bb0c-05dfb5b8301c", 527 | "comment": "", 528 | "command": "end", 529 | "target": "", 530 | "targets": [], 531 | "value": "" 532 | }, { 533 | "id": "8bb9b638-addc-4dbd-a5f7-8ee04568fad6", 534 | "comment": "", 535 | "command": "open", 536 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 537 | "targets": [], 538 | "value": "" 539 | }, { 540 | "id": "4eae6b1d-f7e7-4686-b077-624e0a91dfaa", 541 | "comment": "", 542 | "command": "echo", 543 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 544 | "targets": [], 545 | "value": "" 546 | }] 547 | }, { 548 | "id": "7fa891f3-a2b2-41a2-b7c7-9455fc84b406", 549 | "name": "+ Buy Merrill Edge", 550 | "commands": [{ 551 | "id": "4cfdd1e8-0442-43be-a6db-70dad509de0a", 552 | "comment": "", 553 | "command": "store", 554 | "target": "TICKERHERE", 555 | "targets": [], 556 | "value": "TICKER" 557 | }, { 558 | "id": "613ff68c-ca3e-4d44-99bf-e6c8fa83241e", 559 | "comment": "", 560 | "command": "store", 561 | "target": "1", 562 | "targets": [], 563 | "value": "dynamic" 564 | }, { 565 | "id": "941237bf-0e47-4642-bb3c-8586d456a3b5", 566 | "comment": "", 567 | "command": "store", 568 | "target": "1", 569 | "targets": [], 570 | "value": "QUANTITY" 571 | }, { 572 | "id": "24167be7-92be-47af-84c6-7267455f378e", 573 | "comment": "", 574 | "command": "executeScript", 575 | "target": "return \"-1\"", 576 | "targets": [], 577 | "value": "target" 578 | }, { 579 | "id": "3b90a29c-c142-49d6-92b9-6f93a396df26", 580 | "comment": "", 581 | "command": "if", 582 | "target": "${dynamic} == 0", 583 | "targets": [], 584 | "value": "" 585 | }, { 586 | "id": "3e9dfae0-50f4-468c-8619-f1828c348c16", 587 | "comment": "", 588 | "command": "executeScript", 589 | "target": "return Array.from({length: 50}, (_, i) => i + 1);", 590 | "targets": [], 591 | "value": "accounts" 592 | }, { 593 | "id": "ffce23f7-07cb-49fd-b7c7-7b593d66557f", 594 | "comment": "", 595 | "command": "elseIf", 596 | "target": "${dynamic} == 1", 597 | "targets": [], 598 | "value": "" 599 | }, { 600 | "id": "14facef4-85c3-471e-9c02-6f57fb89bf8e", 601 | "comment": "", 602 | "command": "open", 603 | "target": "https://olui2.fs.ml.com/TFPSummary/PortfolioSimpleView.aspx", 604 | "targets": [], 605 | "value": "" 606 | }, { 607 | "id": "047f6eb9-e8a8-4470-86a6-343e1d3117b6", 608 | "comment": "", 609 | "command": "executeScript", 610 | "target": "const optionElements = document.querySelectorAll('.nwal__account-item-info'); return optionElements.length -1;", 611 | "targets": [], 612 | "value": "len_accounts" 613 | }, { 614 | "id": "8d14deb5-fb32-4f6c-b6e0-ea4f544e8301", 615 | "comment": "", 616 | "command": "executeScript", 617 | "target": "return Array.from({length: ${len_accounts}}, (_, i) => i + 1);", 618 | "targets": [], 619 | "value": "accounts" 620 | }, { 621 | "id": "b75c31c9-45a0-4364-83cb-03605f0e8500", 622 | "comment": "", 623 | "command": "end", 624 | "target": "", 625 | "targets": [], 626 | "value": "" 627 | }, { 628 | "id": "15801d9f-86f3-4c75-a828-91528e45904c", 629 | "comment": "", 630 | "command": "executeScript", 631 | "target": "return ${accounts}.slice(${accounts}.indexOf(${target}) + 1);", 632 | "targets": [], 633 | "value": "list" 634 | }, { 635 | "id": "5254f316-d823-4577-b35b-5862454074d5", 636 | "comment": "", 637 | "command": "executeScript", 638 | "target": "return 0;", 639 | "targets": [], 640 | "value": "count" 641 | }, { 642 | "id": "d7df3ac9-fbd1-43a6-8e18-03d9504f3c0d", 643 | "comment": "", 644 | "command": "executeScript", 645 | "target": "return ${TICKER}.split(\",\");", 646 | "targets": [], 647 | "value": "TICKERS" 648 | }, { 649 | "id": "5a28f883-1e5a-43fa-bd77-ca47f293d8cb", 650 | "comment": "", 651 | "command": "forEach", 652 | "target": "list", 653 | "targets": [], 654 | "value": "account" 655 | }, { 656 | "id": "f158e1e8-b03a-4aeb-9d81-e529da96fc49", 657 | "comment": "", 658 | "command": "forEach", 659 | "target": "TICKERS", 660 | "targets": [], 661 | "value": "TICK" 662 | }, { 663 | "id": "aae8c119-bd63-43d9-9f4b-5fdf98e797f8", 664 | "comment": "", 665 | "command": "open", 666 | "target": "https://olui2.fs.ml.com/Equities/OrderEntry.aspx?as_cd=1.1.1.${account}", 667 | "targets": [], 668 | "value": "" 669 | }, { 670 | "id": "04b5893b-3f05-4d7f-afdf-4f7f199ad895", 671 | "comment": "", 672 | "command": "waitForElementPresent", 673 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", 674 | "targets": [], 675 | "value": "30000" 676 | }, { 677 | "id": "3380d0d8-3b1a-4c8e-aa8c-5ed8489e37f9", 678 | "comment": "", 679 | "command": "click", 680 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", 681 | "targets": [ 682 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", "id"], 683 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$ddlOrderType", "name"], 684 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", "css:finder"], 685 | ["xpath=//select[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType']", "xpath:attributes"], 686 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div/select", "xpath:idRelative"], 687 | ["xpath=//select", "xpath:position"] 688 | ], 689 | "value": "" 690 | }, { 691 | "id": "3730e554-c629-4236-ae70-115750d2296b", 692 | "comment": "", 693 | "command": "select", 694 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddlOrderType", 695 | "targets": [], 696 | "value": "label=Buy" 697 | }, { 698 | "id": "d94f9007-8740-430f-aa6b-6dd75b239130", 699 | "comment": "", 700 | "command": "waitForElementEditable", 701 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 702 | "targets": [], 703 | "value": "30000" 704 | }, { 705 | "id": "a56d201f-f2b9-4c02-96b5-076ddbdb3bcc", 706 | "comment": "", 707 | "command": "click", 708 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 709 | "targets": [ 710 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "id"], 711 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtSymbol", "name"], 712 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "css:finder"], 713 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol']", "xpath:attributes"], 714 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div[2]/input", "xpath:idRelative"], 715 | ["xpath=//div[2]/div[2]/input", "xpath:position"] 716 | ], 717 | "value": "" 718 | }, { 719 | "id": "ebcfddc2-0312-4deb-b74e-5413105e1bc6", 720 | "comment": "", 721 | "command": "type", 722 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 723 | "targets": [ 724 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "id"], 725 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtSymbol", "name"], 726 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "css:finder"], 727 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol']", "xpath:attributes"], 728 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div[2]/input", "xpath:idRelative"], 729 | ["xpath=//div[2]/div[2]/input", "xpath:position"] 730 | ], 731 | "value": "${TICK}" 732 | }, { 733 | "id": "530391ab-e258-473b-a653-a3ea32f7db08", 734 | "comment": "", 735 | "command": "type", 736 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 737 | "targets": [ 738 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "id"], 739 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtSymbol", "name"], 740 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", "css:finder"], 741 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol']", "xpath:attributes"], 742 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trSecondSection']/div[2]/input", "xpath:idRelative"], 743 | ["xpath=//div[2]/div[2]/input", "xpath:position"] 744 | ], 745 | "value": "${TICK}" 746 | }, { 747 | "id": "d8fc6592-4773-4d89-84a1-62c29ec10e2c", 748 | "comment": "", 749 | "command": "sendKeys", 750 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtSymbol", 751 | "targets": [], 752 | "value": "${KEY_ENTER}" 753 | }, { 754 | "id": "1365f49e-e64c-4017-ba12-5b7c973277fa", 755 | "comment": "", 756 | "command": "waitForElementEditable", 757 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", 758 | "targets": [], 759 | "value": "30000" 760 | }, { 761 | "id": "d206ce64-eea7-41fa-9429-ed863509638f", 762 | "comment": "", 763 | "command": "click", 764 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", 765 | "targets": [ 766 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "id"], 767 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtQuantity", "name"], 768 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "css:finder"], 769 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity']", "xpath:attributes"], 770 | ["xpath=//div[@id='SellAmtPanel']/div[2]/div/input", "xpath:idRelative"], 771 | ["xpath=//div[3]/div[2]/div/input", "xpath:position"] 772 | ], 773 | "value": "" 774 | }, { 775 | "id": "ea6a1473-27f0-46e6-9883-58795025c961", 776 | "comment": "", 777 | "command": "type", 778 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", 779 | "targets": [ 780 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "id"], 781 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$txtQuantity", "name"], 782 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity", "css:finder"], 783 | ["xpath=//input[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_txtQuantity']", "xpath:attributes"], 784 | ["xpath=//div[@id='SellAmtPanel']/div[2]/div/input", "xpath:idRelative"], 785 | ["xpath=//div[3]/div[2]/div/input", "xpath:position"] 786 | ], 787 | "value": "${QUANTITY}" 788 | }, { 789 | "id": "912ae8cf-c4de-42d3-b886-31c1042ef5df", 790 | "comment": "", 791 | "command": "pause", 792 | "target": "750", 793 | "targets": [], 794 | "value": "" 795 | }, { 796 | "id": "75e2c59a-371a-4560-8ae6-74f83ae8a36b", 797 | "comment": "", 798 | "command": "click", 799 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", 800 | "targets": [ 801 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", "id"], 802 | ["name=ctl00$ctl00$ctl01$cphSiteMst$cphNestedPage$cphStage$view1$ddPriceType", "name"], 803 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", "css:finder"], 804 | ["xpath=//select[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType']", "xpath:attributes"], 805 | ["xpath=//div[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_trThirdSection']/div/select", "xpath:idRelative"], 806 | ["xpath=//div[3]/div/select", "xpath:position"] 807 | ], 808 | "value": "" 809 | }, { 810 | "id": "5897ecbb-ad3a-4402-84b1-fd91c52c0f69", 811 | "comment": "", 812 | "command": "select", 813 | "target": "id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_ddPriceType", 814 | "targets": [], 815 | "value": "label=Market" 816 | }, { 817 | "id": "ed062a3e-2f65-437e-b558-4450382fdf38", 818 | "comment": "", 819 | "command": "click", 820 | "target": "xpath=//a[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_btnReviewOrder']/span", 821 | "targets": [ 822 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_resxlblOrderPreviewText", "id"], 823 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_resxlblOrderPreviewText", "css:finder"], 824 | ["xpath=//span[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_resxlblOrderPreviewText']", "xpath:attributes"], 825 | ["xpath=//a[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_btnReviewOrder']/span", "xpath:idRelative"], 826 | ["xpath=//div[4]/div[2]/div[2]/div[2]/a/span", "xpath:position"] 827 | ], 828 | "value": "" 829 | }, { 830 | "id": "ccd24e58-cdf9-4524-9299-af8e5e0b3ec0", 831 | "comment": "", 832 | "command": "click", 833 | "target": "xpath=//span[contains(.,'Submit Order')]", 834 | "targets": [ 835 | ["id=ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_EquitiesResourceLabel2", "id"], 836 | ["css=#ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_EquitiesResourceLabel2", "css:finder"], 837 | ["xpath=//span[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_EquitiesResourceLabel2']", "xpath:attributes"], 838 | ["xpath=//a[@id='ctl00_ctl00_ctl01_cphSiteMst_cphNestedPage_cphStage_view1_PilotPreviewConfirmPage_btnSubmit']/span", "xpath:idRelative"], 839 | ["xpath=//div[12]/a/span", "xpath:position"], 840 | ["xpath=//span[contains(.,'Submit Order')]", "xpath:innerText"] 841 | ], 842 | "value": "" 843 | }, { 844 | "id": "26ad3c67-c5f2-4557-859b-a50d9be47a90", 845 | "comment": "", 846 | "command": "echo", 847 | "target": "Buy ${TICK} on acct ${account} ran!", 848 | "targets": [], 849 | "value": "" 850 | }, { 851 | "id": "80e0d839-ebdb-4891-b90f-8d4d8701ac48", 852 | "comment": "", 853 | "command": "end", 854 | "target": "", 855 | "targets": [], 856 | "value": "" 857 | }, { 858 | "id": "7e4a89de-9077-4ab6-9402-424d00b84066", 859 | "comment": "", 860 | "command": "executeScript", 861 | "target": "return ${count} + 1;", 862 | "targets": [], 863 | "value": "count" 864 | }, { 865 | "id": "3ad124fc-b72c-43a5-9846-998ba68cbdd4", 866 | "comment": "", 867 | "command": "executeScript", 868 | "target": "let percentage = (${count} / ${list}.length) * 100; return percentage.toFixed(1);", 869 | "targets": [], 870 | "value": "progress" 871 | }, { 872 | "id": "2d341ba5-163f-4cf8-bef4-f832588f411d", 873 | "comment": "", 874 | "command": "echo", 875 | "target": "Counter Progress ${count}: (${progress}%)", 876 | "targets": [], 877 | "value": "" 878 | }, { 879 | "id": "b0100f05-e7e4-4cca-8f30-07e5f0273b43", 880 | "comment": "", 881 | "command": "end", 882 | "target": "", 883 | "targets": [], 884 | "value": "" 885 | }, { 886 | "id": "12611b0e-2475-42d2-bb79-fa00c157a7d4", 887 | "comment": "", 888 | "command": "open", 889 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 890 | "targets": [], 891 | "value": "" 892 | }, { 893 | "id": "3f36e8d7-b6d1-44b2-9ff8-86268469e0a7", 894 | "comment": "", 895 | "command": "echo", 896 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 897 | "targets": [], 898 | "value": "" 899 | }] 900 | }], 901 | "suites": [{ 902 | "id": "4ff56a1d-cd48-4efc-81d2-0a22ba307ee3", 903 | "name": "Default Suite", 904 | "persistSession": false, 905 | "parallel": false, 906 | "timeout": 300, 907 | "tests": [] 908 | }], 909 | "urls": ["https://olui2.fs.ml.com/"], 910 | "plugins": [] 911 | } -------------------------------------------------------------------------------- /src/Selenium_IDE/Schwab_Auto.side: -------------------------------------------------------------------------------- 1 | { 2 | "id": "3754741b-c246-46fd-a4b9-61df42906362", 3 | "version": "2.0", 4 | "name": "Schwab Automated", 5 | "url": "https://client.schwab.com/app/trade/tom/#/trade", 6 | "tests": [{ 7 | "id": "b9eea497-2592-4c70-bba1-36c1f66168c8", 8 | "name": "| Login Schwab", 9 | "commands": [{ 10 | "id": "0fa645fa-5c44-4eef-b72f-6a3441c6bd9e", 11 | "comment": "", 12 | "command": "open", 13 | "target": "https://client.schwab.com/Login/SignOn/CustomerCenterLogin.aspx", 14 | "targets": [], 15 | "value": "" 16 | }, { 17 | "id": "71256ede-2764-4470-b37f-ea6b4e7cca01", 18 | "comment": "", 19 | "command": "store", 20 | "target": "LOGIN:HERE", 21 | "targets": [], 22 | "value": "SCHWAB_LOGIN" 23 | }, { 24 | "id": "186feb56-385a-4e83-bcbb-1386e6f90ad2", 25 | "comment": "", 26 | "command": "if", 27 | "target": "${SCHWAB_LOGIN} != \"LOGIN:HERE\"", 28 | "targets": [], 29 | "value": "" 30 | }, { 31 | "id": "b1af578a-9b98-48ea-9128-7d8e3e457864", 32 | "comment": "", 33 | "command": "executeScript", 34 | "target": "var LOGIN = ${SCHWAB_LOGIN}; var colonIndex = LOGIN.indexOf(':'); return [ LOGIN.substring(0, colonIndex), LOGIN.substring(colonIndex + 1) ];", 35 | "targets": [], 36 | "value": "LOGIN" 37 | }, { 38 | "id": "aca88a4a-352f-4e57-97f1-f6307002c44f", 39 | "comment": "", 40 | "command": "selectFrame", 41 | "target": "index=1", 42 | "targets": [ 43 | ["index=1"] 44 | ], 45 | "value": "" 46 | }, { 47 | "id": "eca9bb34-6a55-44a3-aabf-9bf116cb2657", 48 | "comment": "", 49 | "command": "click", 50 | "target": "id=loginIdInput", 51 | "targets": [ 52 | ["id=loginIdInput", "id"], 53 | ["css=#loginIdInput", "css:finder"], 54 | ["xpath=//input[@id='loginIdInput']", "xpath:attributes"], 55 | ["xpath=//div[@id='user-name']/div/div/input", "xpath:idRelative"], 56 | ["xpath=//input", "xpath:position"] 57 | ], 58 | "value": "" 59 | }, { 60 | "id": "2200ddb5-4a6d-462d-987a-5bec88dfa8af", 61 | "comment": "", 62 | "command": "type", 63 | "target": "id=loginIdInput", 64 | "targets": [ 65 | ["id=loginIdInput", "id"], 66 | ["css=#loginIdInput", "css:finder"], 67 | ["xpath=//input[@id='loginIdInput']", "xpath:attributes"], 68 | ["xpath=//div[@id='user-name']/div/div/input", "xpath:idRelative"], 69 | ["xpath=//input", "xpath:position"] 70 | ], 71 | "value": "${LOGIN[0]}" 72 | }, { 73 | "id": "3f12c6bc-4f42-4783-bb56-53acf1fb2b4a", 74 | "comment": "", 75 | "command": "click", 76 | "target": "id=passwordInput", 77 | "targets": [ 78 | ["id=passwordInput", "id"], 79 | ["css=#passwordInput", "css:finder"], 80 | ["xpath=//input[@id='passwordInput']", "xpath:attributes"], 81 | ["xpath=//div[@id='password']/div/input", "xpath:idRelative"], 82 | ["xpath=//div[4]/div/input", "xpath:position"] 83 | ], 84 | "value": "" 85 | }, { 86 | "id": "791b52c5-a165-43a3-a220-664c000c2eeb", 87 | "comment": "", 88 | "command": "type", 89 | "target": "id=passwordInput", 90 | "targets": [ 91 | ["id=passwordInput", "id"], 92 | ["css=#passwordInput", "css:finder"], 93 | ["xpath=//input[@id='passwordInput']", "xpath:attributes"], 94 | ["xpath=//div[@id='password']/div/input", "xpath:idRelative"], 95 | ["xpath=//div[4]/div/input", "xpath:position"] 96 | ], 97 | "value": "${LOGIN[1]}" 98 | }, { 99 | "id": "6df08d35-c0dd-46d3-b3c6-7d38a5da4420", 100 | "comment": "", 101 | "command": "click", 102 | "target": "id=btnLogin", 103 | "targets": [ 104 | ["id=btnLogin", "id"], 105 | ["css=#btnLogin", "css:finder"], 106 | ["xpath=//button[@id='btnLogin']", "xpath:attributes"], 107 | ["xpath=//div[@id='button-container']/button", "xpath:idRelative"], 108 | ["xpath=//button", "xpath:position"] 109 | ], 110 | "value": "" 111 | }, { 112 | "id": "0438c0af-6e9a-4707-b421-05fee2e0e374", 113 | "comment": "", 114 | "command": "end", 115 | "target": "", 116 | "targets": [], 117 | "value": "" 118 | }] 119 | }, { 120 | "id": "00fe9fca-2260-4ca5-beee-945eb08cc90c", 121 | "name": "+ Buy Schwab", 122 | "commands": [{ 123 | "id": "431f11b5-635e-458b-8360-9531d5f5dbe5", 124 | "comment": "", 125 | "command": "store", 126 | "target": "TICKERHERE", 127 | "targets": [], 128 | "value": "TICKER" 129 | }, { 130 | "id": "6e8d053a-4fc4-4fdb-a70b-153dc04752be", 131 | "comment": "", 132 | "command": "open", 133 | "target": "https://client.schwab.com/app/trade/tom/#/trade", 134 | "targets": [], 135 | "value": "" 136 | }, { 137 | "id": "b6ca055f-d2c7-4f83-a187-43da6ecaa44e", 138 | "comment": "", 139 | "command": "executeScript", 140 | "target": "return Array.from({length: 30}, (_, i) => i);;", 141 | "targets": [], 142 | "value": "accounts" 143 | }, { 144 | "id": "4956efa5-c445-44f1-9771-90e6c188c228", 145 | "comment": "", 146 | "command": "executeScript", 147 | "target": "return -1", 148 | "targets": [], 149 | "value": "target" 150 | }, { 151 | "id": "c5dda49f-8168-4957-a5e4-f3be2a10ea2f", 152 | "comment": "", 153 | "command": "executeScript", 154 | "target": "let list = ${accounts}; list = list.slice(list.indexOf(${target}) + 1); return list;", 155 | "targets": [], 156 | "value": "numb" 157 | }, { 158 | "id": "838a87a1-c35a-4848-a32a-865cd10c740d", 159 | "comment": "", 160 | "command": "executeScript", 161 | "target": "return 1;", 162 | "targets": [], 163 | "value": "QUANT" 164 | }, { 165 | "id": "260a9e1a-a82b-4d45-98dc-b9ca0fcf4860", 166 | "comment": "", 167 | "command": "forEach", 168 | "target": "numb", 169 | "targets": [], 170 | "value": "account" 171 | }, { 172 | "id": "a213310b-9595-4c6d-aa72-2157bd1cad5a", 173 | "comment": "", 174 | "command": "verifyElementPresent", 175 | "target": "xpath=//sdps-account-selector/div/div/button", 176 | "targets": [ 177 | ["id=basic-example-small", "id"], 178 | ["css=#basic-example-small", "css:finder"], 179 | ["xpath=//button[@id='basic-example-small']", "xpath:attributes"], 180 | ["xpath=//div[@id='basic-example-small-container']/button", "xpath:idRelative"], 181 | ["xpath=//sdps-account-selector/div/div/button", "xpath:position"] 182 | ], 183 | "value": "" 184 | }, { 185 | "id": "75cecab5-14cd-4b8a-b401-4175d8040b4a", 186 | "comment": "", 187 | "command": "click", 188 | "target": "css=.sdps-account-selector__icon", 189 | "targets": [ 190 | ["css=.sdps-account-selector__icon", "css:finder"], 191 | ["xpath=//button[@id='basic-example-small']/span[5]", "xpath:idRelative"], 192 | ["xpath=//span[5]", "xpath:position"] 193 | ], 194 | "value": "" 195 | }, { 196 | "id": "db1c1e78-70f8-4eff-bb4e-3c7b9132be18", 197 | "comment": "", 198 | "command": "assertElementPresent", 199 | "target": "xpath=//*[@id=\"basic-example-small-header-0-account-${account}\"]", 200 | "targets": [], 201 | "value": "" 202 | }, { 203 | "id": "dc6ba57f-6ffd-45bd-a920-02ac0c11096b", 204 | "comment": "", 205 | "command": "click", 206 | "target": "xpath=//*[@id=\"basic-example-small-header-0-account-${account}\"]", 207 | "targets": [], 208 | "value": "" 209 | }, { 210 | "id": "cd349c6c-753e-4f1f-97db-03506bdb22d7", 211 | "comment": "", 212 | "command": "executeScript", 213 | "target": "return ${TICKER}.split(\",\");", 214 | "targets": [], 215 | "value": "TICKERS" 216 | }, { 217 | "id": "68c08b02-f9b0-458e-b8e4-5d4d24ef0aef", 218 | "comment": "", 219 | "command": "forEach", 220 | "target": "TICKERS", 221 | "targets": [], 222 | "value": "TICK" 223 | }, { 224 | "id": "55be14bb-5bb9-4d7d-9967-b2d0cb779af1", 225 | "comment": "", 226 | "command": "waitForElementEditable", 227 | "target": "id=_txtSymbol", 228 | "targets": [], 229 | "value": "45000" 230 | }, { 231 | "id": "a93bcd76-af3a-48da-8a44-f5c36e898eaf", 232 | "comment": "", 233 | "command": "type", 234 | "target": "id=_txtSymbol", 235 | "targets": [ 236 | ["id=_txtSymbol", "id"], 237 | ["name=symbol", "name"], 238 | ["css=#\\_txtSymbol", "css:finder"], 239 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 240 | ["xpath=//mc-trade-symbol[@id='mctsymbolaa9bf0b8']/div/div/div/input", "xpath:idRelative"], 241 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 242 | ], 243 | "value": "${TICK}" 244 | }, { 245 | "id": "814e0938-d4fa-4baf-bfc0-56cdf65a1a25", 246 | "comment": "", 247 | "command": "pause", 248 | "target": "1050", 249 | "targets": [], 250 | "value": "" 251 | }, { 252 | "id": "82061be9-5e9c-4da2-b596-1ab444446951", 253 | "comment": "", 254 | "command": "sendKeys", 255 | "target": "id=_txtSymbol", 256 | "targets": [ 257 | ["id=_txtSymbol", "id"], 258 | ["name=symbol", "name"], 259 | ["css=#\\_txtSymbol", "css:finder"], 260 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 261 | ["xpath=//mc-trade-symbol[@id='mctsymbolaa9bf0b8']/div/div/div/input", "xpath:idRelative"], 262 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 263 | ], 264 | "value": "${KEY_ENTER}" 265 | }, { 266 | "id": "7828d1af-9db0-4266-8a7c-954c4fc4a9e4", 267 | "comment": "", 268 | "command": "pause", 269 | "target": "1250", 270 | "targets": [], 271 | "value": "" 272 | }, { 273 | "id": "9e7c287a-4520-4717-ba5e-c2fe14024c18", 274 | "comment": "", 275 | "command": "click", 276 | "target": "id=_action", 277 | "targets": [ 278 | ["id=_action", "id"], 279 | ["name=action", "name"], 280 | ["css=#\\_action", "css:finder"], 281 | ["xpath=//select[@id='_action']", "xpath:attributes"], 282 | ["xpath=//mc-trade-order-leg[@id='mctordleg424668ec']/div/div[2]/div/select", "xpath:idRelative"], 283 | ["xpath=//mc-trade-order-leg/div/div[2]/div/select", "xpath:position"] 284 | ], 285 | "value": "" 286 | }, { 287 | "id": "2d6028c5-f8c0-4856-994e-8abac930a5e9", 288 | "comment": "", 289 | "command": "select", 290 | "target": "id=_action", 291 | "targets": [], 292 | "value": "label=Buy" 293 | }, { 294 | "id": "ab706b3b-e39e-4367-81e9-e27612508ad0", 295 | "comment": "", 296 | "command": "if", 297 | "target": "${QUANT} != 1", 298 | "targets": [], 299 | "value": "" 300 | }, { 301 | "id": "56d4ffa3-d29c-48c3-bdef-4d165d6154c1", 302 | "comment": "", 303 | "command": "executeScript", 304 | "target": "var inputElement = document.getElementById(\"ordernumber01inputqty-stepper-input\"); inputElement.value = ${QUANT} - 1; var incrementButton = document.querySelector('.sdps-button--input-right-inset'); incrementButton.click();", 305 | "targets": [], 306 | "value": "" 307 | }, { 308 | "id": "6fc4462e-641e-40bd-80b2-1a51a1667fe3", 309 | "comment": "", 310 | "command": "end", 311 | "target": "", 312 | "targets": [], 313 | "value": "" 314 | }, { 315 | "id": "91ec5382-16e5-4331-bd14-18f8e163648e", 316 | "comment": "", 317 | "command": "click", 318 | "target": "css=.mtt-dropdown__select", 319 | "targets": [ 320 | ["css=.mtt-dropdown__select", "css:finder"], 321 | ["xpath=//div[@id='mcaio-orderType-container']/div/div/div/select", "xpath:idRelative"], 322 | ["xpath=//div[5]/div/div/div/select", "xpath:position"] 323 | ], 324 | "value": "" 325 | }, { 326 | "id": "3e8fe5e2-59e0-46e9-9bcc-e690b6d784cb", 327 | "comment": "", 328 | "command": "select", 329 | "target": "css=.mtt-dropdown__select", 330 | "targets": [ 331 | ["css=.mtt-dropdown__select", "css:finder"], 332 | ["xpath=//div[@id='mcaio-orderType-container']/div/div/div/select", "xpath:idRelative"], 333 | ["xpath=//div[5]/div/div/div/select", "xpath:position"] 334 | ], 335 | "value": "label=Market" 336 | }, { 337 | "id": "02d4999e-b847-4329-9681-8cc24219eb5f", 338 | "comment": "", 339 | "command": "click", 340 | "target": "css=.mcaio-order--reviewbtn", 341 | "targets": [ 342 | ["css=.mcaio-order--reviewbtn", "css:finder"], 343 | ["xpath=(//button[@type='button'])[39]", "xpath:attributes"], 344 | ["xpath=//div[@id='mcaio-footer']/div/div[2]/button[2]", "xpath:idRelative"], 345 | ["xpath=//div[4]/div/div[2]/button[2]", "xpath:position"], 346 | ["xpath=//button[contains(.,'Review Order')]", "xpath:innerText"] 347 | ], 348 | "value": "" 349 | }, { 350 | "id": "766ed655-343c-4d67-9253-0914dbcfb990", 351 | "comment": "", 352 | "command": "pause", 353 | "target": "6500", 354 | "targets": [], 355 | "value": "" 356 | }, { 357 | "id": "5f05ff0a-2616-4ad6-b07a-1d5d629a67c9", 358 | "comment": "", 359 | "command": "click", 360 | "target": "id=mtt-place-button", 361 | "targets": [ 362 | ["id=mtt-place-button", "id"], 363 | ["css=#mtt-place-button", "css:finder"], 364 | ["xpath=//button[@id='mtt-place-button']", "xpath:attributes"], 365 | ["xpath=//div[@id='mcaio-footer']/div/div/button[3]", "xpath:idRelative"], 366 | ["xpath=//button[3]", "xpath:position"] 367 | ], 368 | "value": "" 369 | }, { 370 | "id": "a1f5af57-4c78-4cf0-a9dc-6463b3d51057", 371 | "comment": "", 372 | "command": "click", 373 | "target": "css=.mcaio--mcaio-cta-buttons-anothertrade", 374 | "targets": [ 375 | ["css=.mcaio--mcaio-cta-buttons-anothertrade", "css:finder"], 376 | ["xpath=//button[@onclick='mcttrade62f278b1.handlePlaceAnother()']", "xpath:attributes"], 377 | ["xpath=//div[@id='mcaio-footer']/div/div/button[3]", "xpath:idRelative"], 378 | ["xpath=//button[3]", "xpath:position"], 379 | ["xpath=//button[contains(.,'Place Another Order')]", "xpath:innerText"] 380 | ], 381 | "value": "" 382 | }, { 383 | "id": "886b65cc-c82c-4e20-8325-e26183aafe30", 384 | "comment": "", 385 | "command": "echo", 386 | "target": "${account} Buying ${TICK} Test Successful!", 387 | "targets": [], 388 | "value": "" 389 | }, { 390 | "id": "b9ff0bd1-33df-4051-8597-88ddd548b60e", 391 | "comment": "", 392 | "command": "end", 393 | "target": "", 394 | "targets": [], 395 | "value": "" 396 | }, { 397 | "id": "b3e5927c-02b5-42e6-a8eb-e080169a914c", 398 | "comment": "", 399 | "command": "end", 400 | "target": "", 401 | "targets": [], 402 | "value": "" 403 | }, { 404 | "id": "98c9f9af-072d-4da2-90e8-4171e51e18d3", 405 | "comment": "", 406 | "command": "open", 407 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 408 | "targets": [], 409 | "value": "" 410 | }, { 411 | "id": "693838ed-b703-47b2-b65b-81c3792b8376", 412 | "comment": "", 413 | "command": "echo", 414 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 415 | "targets": [], 416 | "value": "" 417 | }] 418 | }, { 419 | "id": "a76629fc-6faf-44c5-a5d0-9fe8941ce312", 420 | "name": "- Schwab Sell", 421 | "commands": [{ 422 | "id": "2d7949a3-7a85-49d4-8cf4-55796866d0e1", 423 | "comment": "", 424 | "command": "store", 425 | "target": "TICKERHERE", 426 | "targets": [], 427 | "value": "TICKER" 428 | }, { 429 | "id": "6995d2d3-06a5-4754-a099-ccb1c4cb2356", 430 | "comment": "", 431 | "command": "open", 432 | "target": "https://client.schwab.com/app/trade/tom/#/trade", 433 | "targets": [], 434 | "value": "" 435 | }, { 436 | "id": "faea0380-ed7c-4300-b2e5-cdf12cd367a4", 437 | "comment": "", 438 | "command": "executeScript", 439 | "target": "return Array.from({length: 30}, (_, i) => i);;", 440 | "targets": [], 441 | "value": "accounts" 442 | }, { 443 | "id": "34f12301-3a58-47c9-be7b-3a4520b42585", 444 | "comment": "", 445 | "command": "executeScript", 446 | "target": "return -1", 447 | "targets": [], 448 | "value": "target" 449 | }, { 450 | "id": "00a04993-7948-4972-b01c-3ba0ff92e23d", 451 | "comment": "", 452 | "command": "executeScript", 453 | "target": "return 1;", 454 | "targets": [], 455 | "value": "QUANT" 456 | }, { 457 | "id": "d431321c-5e85-4371-8b89-01baa639b6a4", 458 | "comment": "", 459 | "command": "executeScript", 460 | "target": "let list = ${accounts}; list = list.slice(list.indexOf(${target}) + 1); return list;", 461 | "targets": [], 462 | "value": "numb" 463 | }, { 464 | "id": "2dd9872c-5598-4661-b721-ce97f7e6b08c", 465 | "comment": "", 466 | "command": "executeScript", 467 | "target": "return ${TICKER}.split(\",\");", 468 | "targets": [], 469 | "value": "TICKERS" 470 | }, { 471 | "id": "b6c4f34e-6c59-44b6-8beb-9c9e1743e38d", 472 | "comment": "", 473 | "command": "forEach", 474 | "target": "numb", 475 | "targets": [], 476 | "value": "account" 477 | }, { 478 | "id": "67bb05d0-27bd-43c3-853d-1dfa19681c9e", 479 | "comment": "", 480 | "command": "verifyElementPresent", 481 | "target": "xpath=//sdps-account-selector/div/div/button", 482 | "targets": [ 483 | ["id=basic-example-small", "id"], 484 | ["css=#basic-example-small", "css:finder"], 485 | ["xpath=//button[@id='basic-example-small']", "xpath:attributes"], 486 | ["xpath=//div[@id='basic-example-small-container']/button", "xpath:idRelative"], 487 | ["xpath=//sdps-account-selector/div/div/button", "xpath:position"] 488 | ], 489 | "value": "" 490 | }, { 491 | "id": "29024848-2d0f-4e8a-b663-aa9997f20d9e", 492 | "comment": "", 493 | "command": "click", 494 | "target": "css=.sdps-account-selector__icon", 495 | "targets": [ 496 | ["css=.sdps-account-selector__icon", "css:finder"], 497 | ["xpath=//button[@id='basic-example-small']/span[5]", "xpath:idRelative"], 498 | ["xpath=//span[5]", "xpath:position"] 499 | ], 500 | "value": "" 501 | }, { 502 | "id": "cc8c5735-3f13-45cd-af5c-184c1a486cb1", 503 | "comment": "", 504 | "command": "assertElementPresent", 505 | "target": "xpath=//*[@id=\"basic-example-small-header-0-account-${account}\"]", 506 | "targets": [], 507 | "value": "" 508 | }, { 509 | "id": "3ca30f25-1b00-42d9-9f57-7e3122de504b", 510 | "comment": "", 511 | "command": "click", 512 | "target": "xpath=//*[@id=\"basic-example-small-header-0-account-${account}\"]", 513 | "targets": [], 514 | "value": "" 515 | }, { 516 | "id": "7c4a7f8a-0fa9-46f8-b2d9-19a26920d360", 517 | "comment": "", 518 | "command": "forEach", 519 | "target": "TICKERS", 520 | "targets": [], 521 | "value": "TICK" 522 | }, { 523 | "id": "7130fabe-77de-4699-9736-578bcb67c7b1", 524 | "comment": "", 525 | "command": "waitForElementEditable", 526 | "target": "id=_txtSymbol", 527 | "targets": [], 528 | "value": "30000" 529 | }, { 530 | "id": "0fc38531-f92e-4240-9159-ef8551a0e7dc", 531 | "comment": "", 532 | "command": "type", 533 | "target": "id=_txtSymbol", 534 | "targets": [ 535 | ["id=_txtSymbol", "id"], 536 | ["name=symbol", "name"], 537 | ["css=#\\_txtSymbol", "css:finder"], 538 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 539 | ["xpath=//mc-trade-symbol[@id='mctsymbolaa9bf0b8']/div/div/div/input", "xpath:idRelative"], 540 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 541 | ], 542 | "value": "${TICK}" 543 | }, { 544 | "id": "4003d509-31f9-42af-a1e6-f21cf6b57f3c", 545 | "comment": "", 546 | "command": "pause", 547 | "target": "1000", 548 | "targets": [], 549 | "value": "" 550 | }, { 551 | "id": "6cc75c55-2f56-4b70-8752-6b97bb1269f8", 552 | "comment": "", 553 | "command": "sendKeys", 554 | "target": "id=_txtSymbol", 555 | "targets": [ 556 | ["id=_txtSymbol", "id"], 557 | ["name=symbol", "name"], 558 | ["css=#\\_txtSymbol", "css:finder"], 559 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 560 | ["xpath=//mc-trade-symbol[@id='mctsymbolaa9bf0b8']/div/div/div/input", "xpath:idRelative"], 561 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 562 | ], 563 | "value": "${KEY_ENTER}" 564 | }, { 565 | "id": "248f299a-806b-4bb4-89fe-9c2b174e23ac", 566 | "comment": "", 567 | "command": "pause", 568 | "target": "1050", 569 | "targets": [], 570 | "value": "" 571 | }, { 572 | "id": "1a502f73-2cbe-495c-820e-6dd334161831", 573 | "comment": "", 574 | "command": "click", 575 | "target": "id=_action", 576 | "targets": [ 577 | ["id=_action", "id"], 578 | ["name=action", "name"], 579 | ["css=#\\_action", "css:finder"], 580 | ["xpath=//select[@id='_action']", "xpath:attributes"], 581 | ["xpath=//mc-trade-order-leg[@id='mctordleg424668ec']/div/div[2]/div/select", "xpath:idRelative"], 582 | ["xpath=//mc-trade-order-leg/div/div[2]/div/select", "xpath:position"] 583 | ], 584 | "value": "" 585 | }, { 586 | "id": "db691730-c774-4d7f-bf70-5bbf2bc6b150", 587 | "comment": "", 588 | "command": "select", 589 | "target": "id=_action", 590 | "targets": [], 591 | "value": "label=Sell" 592 | }, { 593 | "id": "c2047331-6e50-4467-a9c5-246fca096703", 594 | "comment": "", 595 | "command": "click", 596 | "target": "css=.mtt-dropdown__select", 597 | "targets": [ 598 | ["css=.mtt-dropdown__select", "css:finder"], 599 | ["xpath=//div[@id='mcaio-orderType-container']/div/div/div/select", "xpath:idRelative"], 600 | ["xpath=//div[5]/div/div/div/select", "xpath:position"] 601 | ], 602 | "value": "" 603 | }, { 604 | "id": "c97ee7f9-72eb-4009-af14-cdf8ff397962", 605 | "comment": "", 606 | "command": "select", 607 | "target": "css=.mtt-dropdown__select", 608 | "targets": [ 609 | ["css=.mtt-dropdown__select", "css:finder"], 610 | ["xpath=//div[@id='mcaio-orderType-container']/div/div/div/select", "xpath:idRelative"], 611 | ["xpath=//div[5]/div/div/div/select", "xpath:position"] 612 | ], 613 | "value": "label=Market" 614 | }, { 615 | "id": "65e1b30d-fe6d-45d2-8aab-bb11b2199c88", 616 | "comment": "", 617 | "command": "if", 618 | "target": "${QUANT} != 1", 619 | "targets": [], 620 | "value": "" 621 | }, { 622 | "id": "9cf842b8-0a2c-4ba8-8da9-13027c784da9", 623 | "comment": "", 624 | "command": "executeScript", 625 | "target": "var element = document.querySelector('[aria-label=\"increment number\"]'); for (var i = 0; i < (${QUANT}- 1); i++) { element.click(); }", 626 | "targets": [], 627 | "value": "" 628 | }, { 629 | "id": "b13fe29e-60e8-4c15-b528-22e1eb11b174", 630 | "comment": "", 631 | "command": "end", 632 | "target": "", 633 | "targets": [], 634 | "value": "" 635 | }, { 636 | "id": "6ecd1f39-a0fa-41c4-bee4-15b990d9834b", 637 | "comment": "", 638 | "command": "click", 639 | "target": "css=.mcaio-order--reviewbtn", 640 | "targets": [ 641 | ["css=.mcaio-order--reviewbtn", "css:finder"], 642 | ["xpath=(//button[@type='button'])[39]", "xpath:attributes"], 643 | ["xpath=//div[@id='mcaio-footer']/div/div[2]/button[2]", "xpath:idRelative"], 644 | ["xpath=//div[4]/div/div[2]/button[2]", "xpath:position"], 645 | ["xpath=//button[contains(.,'Review Order')]", "xpath:innerText"] 646 | ], 647 | "value": "" 648 | }, { 649 | "id": "95f8e12b-5b1a-4c2b-a100-dcd56b085e0b", 650 | "comment": "", 651 | "command": "pause", 652 | "target": "1650", 653 | "targets": [], 654 | "value": "" 655 | }, { 656 | "id": "f34996e3-3d12-4d1c-a44a-a4560ef251a3", 657 | "comment": "", 658 | "command": "executeScript", 659 | "target": "const xpath = '/html/body/div[1]/div[3]/div/div[2]/div[1]/div[4]/app-root/app-trade/mc-trade/div[2]/div[2]/div[1]/div[3]/div[1]/p[2]'; const element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; return (element && (element.textContent.includes('This security is not currently held in this account.') || element.textContent.includes('greater quantity of shares than you hold in this account')));", 660 | "targets": [], 661 | "value": "no_position" 662 | }, { 663 | "id": "7e0b8f60-dcdf-42d2-802f-69991a0b8f46", 664 | "comment": "", 665 | "command": "if", 666 | "target": "${no_position}", 667 | "targets": [], 668 | "value": "" 669 | }, { 670 | "id": "3499621c-0aec-499c-8325-b7dcdaf38903", 671 | "comment": "", 672 | "command": "echo", 673 | "target": "${account} either has no position with ${TICK} or the transaction would result in oversold shares.", 674 | "targets": [], 675 | "value": "" 676 | }, { 677 | "id": "4796660c-9be2-43db-9094-4aff1f3a72b0", 678 | "comment": "", 679 | "command": "click", 680 | "target": "css=.mcaio-cta-buttons > .col-full > .sdps-button--secondary", 681 | "targets": [ 682 | ["css=.mcaio-cta-buttons > .col-full > .sdps-button--secondary", "css:finder"], 683 | ["xpath=(//button[@type='button'])[3]", "xpath:attributes"], 684 | ["xpath=//div[@id='page-container']/div[3]/div[2]/div/div/button", "xpath:idRelative"], 685 | ["xpath=//div[3]/div[2]/div/div/button", "xpath:position"], 686 | ["xpath=//button[contains(.,'Change Order')]", "xpath:innerText"] 687 | ], 688 | "value": "" 689 | }, { 690 | "id": "3719972a-cb58-40c3-8628-fb663634552d", 691 | "comment": "", 692 | "command": "else", 693 | "target": "", 694 | "targets": [], 695 | "value": "" 696 | }, { 697 | "id": "ce8480bc-c52c-47fc-9335-c0c8de06544f", 698 | "comment": "", 699 | "command": "click", 700 | "target": "id=mtt-place-button", 701 | "targets": [ 702 | ["id=mtt-place-button", "id"], 703 | ["css=#mtt-place-button", "css:finder"], 704 | ["xpath=//button[@id='mtt-place-button']", "xpath:attributes"], 705 | ["xpath=//div[@id='mcaio-footer']/div/div/button[3]", "xpath:idRelative"], 706 | ["xpath=//button[3]", "xpath:position"] 707 | ], 708 | "value": "" 709 | }, { 710 | "id": "f26ec63f-2f7f-450a-9ddc-7ce99ac3e85b", 711 | "comment": "", 712 | "command": "click", 713 | "target": "css=.mcaio--mcaio-cta-buttons-anothertrade", 714 | "targets": [ 715 | ["css=.mcaio--mcaio-cta-buttons-anothertrade", "css:finder"], 716 | ["xpath=//button[@onclick='mcttrade62f278b1.handlePlaceAnother()']", "xpath:attributes"], 717 | ["xpath=//div[@id='mcaio-footer']/div/div/button[3]", "xpath:idRelative"], 718 | ["xpath=//button[3]", "xpath:position"], 719 | ["xpath=//button[contains(.,'Place Another Order')]", "xpath:innerText"] 720 | ], 721 | "value": "" 722 | }, { 723 | "id": "ac022661-a730-43e4-8890-17ff69032309", 724 | "comment": "", 725 | "command": "echo", 726 | "target": "${account} Selling ${TICK} Test Successful!", 727 | "targets": [], 728 | "value": "" 729 | }, { 730 | "id": "f713cbc6-8918-475e-9739-b2b3e7424dc3", 731 | "comment": "", 732 | "command": "end", 733 | "target": "", 734 | "targets": [], 735 | "value": "" 736 | }, { 737 | "id": "e29493ac-3d07-4360-ac47-f8d06982f356", 738 | "comment": "", 739 | "command": "end", 740 | "target": "", 741 | "targets": [], 742 | "value": "" 743 | }, { 744 | "id": "04608758-c13f-4928-a576-cc8cca37a0ab", 745 | "comment": "", 746 | "command": "end", 747 | "target": "", 748 | "targets": [], 749 | "value": "" 750 | }, { 751 | "id": "bf649f76-4ead-468e-b000-76dc333901b3", 752 | "comment": "", 753 | "command": "open", 754 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 755 | "targets": [], 756 | "value": "" 757 | }, { 758 | "id": "57a05713-e8a7-4eb3-8626-045264bdedc8", 759 | "comment": "", 760 | "command": "echo", 761 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 762 | "targets": [], 763 | "value": "" 764 | }] 765 | }, { 766 | "id": "41be4d96-884b-4213-94db-b47b55cc8e79", 767 | "name": "X Limit Buy Schwab", 768 | "commands": [{ 769 | "id": "23961c54-6cc6-499b-8151-7aa05c166d8f", 770 | "comment": "", 771 | "command": "store", 772 | "target": "TICKERHERE", 773 | "targets": [], 774 | "value": "TICKER" 775 | }, { 776 | "id": "4b86aaa8-891d-41e0-b7ca-65ae2fe3da6e", 777 | "comment": "", 778 | "command": "store", 779 | "target": "1.00", 780 | "targets": [], 781 | "value": "LIMIT" 782 | }, { 783 | "id": "75f293d7-1cac-4ee8-8c7a-88aba29f705d", 784 | "comment": "", 785 | "command": "open", 786 | "target": "https://client.schwab.com/app/trade/tom/#/trade", 787 | "targets": [], 788 | "value": "" 789 | }, { 790 | "id": "833779a8-533b-463a-a067-9c2e018286f9", 791 | "comment": "", 792 | "command": "executeScript", 793 | "target": "return Array.from({length: 30}, (_, i) => i);;", 794 | "targets": [], 795 | "value": "accounts" 796 | }, { 797 | "id": "58b684b4-6dfc-4737-abee-15cc61bee104", 798 | "comment": "", 799 | "command": "executeScript", 800 | "target": "return -1", 801 | "targets": [], 802 | "value": "target" 803 | }, { 804 | "id": "08c1589b-8e32-4f0c-a635-44e9dcd1bb41", 805 | "comment": "", 806 | "command": "executeScript", 807 | "target": "let list = ${accounts}; list = list.slice(list.indexOf(${target}) + 1); return list;", 808 | "targets": [], 809 | "value": "numb" 810 | }, { 811 | "id": "e3bdaf58-60bf-4550-8df9-4456272b250c", 812 | "comment": "", 813 | "command": "executeScript", 814 | "target": "return ${TICKER}.split(\",\");", 815 | "targets": [], 816 | "value": "TICKERS" 817 | }, { 818 | "id": "3ac1254f-39aa-4c41-ace7-353028bb9fbe", 819 | "comment": "", 820 | "command": "forEach", 821 | "target": "numb", 822 | "targets": [], 823 | "value": "account" 824 | }, { 825 | "id": "d6b7bb62-03d9-4fce-9eb7-7151bd64c76a", 826 | "comment": "", 827 | "command": "verifyElementPresent", 828 | "target": "xpath=//sdps-account-selector/div/div/button", 829 | "targets": [ 830 | ["id=basic-example-small", "id"], 831 | ["css=#basic-example-small", "css:finder"], 832 | ["xpath=//button[@id='basic-example-small']", "xpath:attributes"], 833 | ["xpath=//div[@id='basic-example-small-container']/button", "xpath:idRelative"], 834 | ["xpath=//sdps-account-selector/div/div/button", "xpath:position"] 835 | ], 836 | "value": "" 837 | }, { 838 | "id": "c474eea2-e016-4579-b2d7-9556ab71f624", 839 | "comment": "", 840 | "command": "click", 841 | "target": "css=.sdps-account-selector__icon", 842 | "targets": [ 843 | ["css=.sdps-account-selector__icon", "css:finder"], 844 | ["xpath=//button[@id='basic-example-small']/span[5]", "xpath:idRelative"], 845 | ["xpath=//span[5]", "xpath:position"] 846 | ], 847 | "value": "" 848 | }, { 849 | "id": "d2afd6e1-1661-400d-936e-7df69005dd54", 850 | "comment": "", 851 | "command": "assertElementPresent", 852 | "target": "xpath=//*[@id=\"basic-example-small-header-0-account-${account}\"]", 853 | "targets": [], 854 | "value": "" 855 | }, { 856 | "id": "a0e6a97e-7349-449f-8665-4db965e9c5c9", 857 | "comment": "", 858 | "command": "click", 859 | "target": "xpath=//*[@id=\"basic-example-small-header-0-account-${account}\"]", 860 | "targets": [], 861 | "value": "" 862 | }, { 863 | "id": "0de48f3f-582d-4b67-b485-b99f4ddbb41d", 864 | "comment": "", 865 | "command": "forEach", 866 | "target": "TICKERS", 867 | "targets": [], 868 | "value": "TICK" 869 | }, { 870 | "id": "ae78d933-642e-484b-b2af-5d1fb09ce3cb", 871 | "comment": "", 872 | "command": "pause", 873 | "target": "1750", 874 | "targets": [], 875 | "value": "" 876 | }, { 877 | "id": "36c935bf-68f9-41a3-afa5-5f9487aaffb2", 878 | "comment": "", 879 | "command": "assertEditable", 880 | "target": "id=_txtSymbol", 881 | "targets": [ 882 | ["id=_txtSymbol", "id"], 883 | ["name=symbol", "name"], 884 | ["css=#\\_txtSymbol", "css:finder"], 885 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 886 | ["xpath=//mc-trade-symbol[@id='mctsymbol1ea50182']/div/div/div/input", "xpath:idRelative"], 887 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 888 | ], 889 | "value": "" 890 | }, { 891 | "id": "61fb14ea-b1a9-4955-84cc-f648eb918843", 892 | "comment": "", 893 | "command": "type", 894 | "target": "id=_txtSymbol", 895 | "targets": [ 896 | ["id=_txtSymbol", "id"], 897 | ["name=symbol", "name"], 898 | ["css=#\\_txtSymbol", "css:finder"], 899 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 900 | ["xpath=//mc-trade-symbol[@id='mctsymbolaa9bf0b8']/div/div/div/input", "xpath:idRelative"], 901 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 902 | ], 903 | "value": "${TICK}" 904 | }, { 905 | "id": "fdf65b47-25c1-4acd-b15e-5cf3f4c8f102", 906 | "comment": "", 907 | "command": "pause", 908 | "target": "0", 909 | "targets": [], 910 | "value": "" 911 | }, { 912 | "id": "5047608b-3de7-4434-ba79-dc2a5948d708", 913 | "comment": "", 914 | "command": "sendKeys", 915 | "target": "id=_txtSymbol", 916 | "targets": [ 917 | ["id=_txtSymbol", "id"], 918 | ["name=symbol", "name"], 919 | ["css=#\\_txtSymbol", "css:finder"], 920 | ["xpath=//input[@id='_txtSymbol']", "xpath:attributes"], 921 | ["xpath=//mc-trade-symbol[@id='mctsymbolaa9bf0b8']/div/div/div/input", "xpath:idRelative"], 922 | ["xpath=//mc-trade-symbol/div/div/div/input", "xpath:position"] 923 | ], 924 | "value": "${KEY_ENTER}" 925 | }, { 926 | "id": "5a6e8f52-4866-4a24-b41f-f4abc6fc8e97", 927 | "comment": "", 928 | "command": "pause", 929 | "target": "1250", 930 | "targets": [], 931 | "value": "" 932 | }, { 933 | "id": "8219c240-b633-4324-a396-79c2023f525b", 934 | "comment": "", 935 | "command": "click", 936 | "target": "id=_action", 937 | "targets": [ 938 | ["id=_action", "id"], 939 | ["name=action", "name"], 940 | ["css=#\\_action", "css:finder"], 941 | ["xpath=//select[@id='_action']", "xpath:attributes"], 942 | ["xpath=//mc-trade-order-leg[@id='mctordleg424668ec']/div/div[2]/div/select", "xpath:idRelative"], 943 | ["xpath=//mc-trade-order-leg/div/div[2]/div/select", "xpath:position"] 944 | ], 945 | "value": "" 946 | }, { 947 | "id": "61167d4c-a871-4268-bb43-5bef5acbf544", 948 | "comment": "", 949 | "command": "select", 950 | "target": "id=_action", 951 | "targets": [], 952 | "value": "label=Buy" 953 | }, { 954 | "id": "b70662fe-d7e5-4914-96bc-d00b4f724f4c", 955 | "comment": "", 956 | "command": "click", 957 | "target": "css=.mtt-dropdown__select", 958 | "targets": [ 959 | ["css=.mtt-dropdown__select", "css:finder"], 960 | ["xpath=//div[@id='mcaio-orderType-container']/div/div/div/select", "xpath:idRelative"], 961 | ["xpath=//div[5]/div/div/div/select", "xpath:position"] 962 | ], 963 | "value": "" 964 | }, { 965 | "id": "705f12d4-ca81-459b-bd78-660638c5c5cf", 966 | "comment": "", 967 | "command": "select", 968 | "target": "css=.mtt-dropdown__select", 969 | "targets": [ 970 | ["css=.mtt-dropdown__select", "css:finder"], 971 | ["xpath=//div[@id='mcaio-orderType-container']/div/div/div/select", "xpath:idRelative"], 972 | ["xpath=//div[5]/div/div/div/select", "xpath:position"] 973 | ], 974 | "value": "label=Limit" 975 | }, { 976 | "id": "2ec1df95-424c-47fa-96af-bf807a10f9dd", 977 | "comment": "", 978 | "command": "click", 979 | "target": "id=_txtLimitPrice", 980 | "targets": [ 981 | ["id=_txtLimitPrice", "id"], 982 | ["name=limitPrice", "name"], 983 | ["css=#\\_txtLimitPrice", "css:finder"], 984 | ["xpath=//input[@id='_txtLimitPrice']", "xpath:attributes"], 985 | ["xpath=//div[@id='mcaio-LimitPriceContainer']/div/div/input", "xpath:idRelative"], 986 | ["xpath=//mc-trade-order-control/div/div/div[7]/div/div/input", "xpath:position"] 987 | ], 988 | "value": "" 989 | }, { 990 | "id": "7fc08730-f086-46e0-bf95-fc42bd1dd330", 991 | "comment": "", 992 | "command": "type", 993 | "target": "id=_txtLimitPrice", 994 | "targets": [ 995 | ["id=_txtLimitPrice", "id"], 996 | ["name=limitPrice", "name"], 997 | ["css=#\\_txtLimitPrice", "css:finder"], 998 | ["xpath=//input[@id='_txtLimitPrice']", "xpath:attributes"], 999 | ["xpath=//div[@id='mcaio-LimitPriceContainer']/div/div/input", "xpath:idRelative"], 1000 | ["xpath=//mc-trade-order-control/div/div/div[7]/div/div/input", "xpath:position"] 1001 | ], 1002 | "value": "${LIMIT}" 1003 | }, { 1004 | "id": "edcecf76-1461-4284-8d59-add6ee6e42e4", 1005 | "comment": "", 1006 | "command": "click", 1007 | "target": "css=.mcaio-order--reviewbtn", 1008 | "targets": [ 1009 | ["css=.mcaio-order--reviewbtn", "css:finder"], 1010 | ["xpath=(//button[@type='button'])[39]", "xpath:attributes"], 1011 | ["xpath=//div[@id='mcaio-footer']/div/div[2]/button[2]", "xpath:idRelative"], 1012 | ["xpath=//div[4]/div/div[2]/button[2]", "xpath:position"], 1013 | ["xpath=//button[contains(.,'Review Order')]", "xpath:innerText"] 1014 | ], 1015 | "value": "" 1016 | }, { 1017 | "id": "0a6c7545-2d2b-48d6-9560-f2bfbd35de71", 1018 | "comment": "", 1019 | "command": "pause", 1020 | "target": "1650", 1021 | "targets": [], 1022 | "value": "" 1023 | }, { 1024 | "id": "b2df163d-061c-4b8a-a7ca-881f0bb6a6b9", 1025 | "comment": "", 1026 | "command": "click", 1027 | "target": "id=mtt-place-button", 1028 | "targets": [ 1029 | ["id=mtt-place-button", "id"], 1030 | ["css=#mtt-place-button", "css:finder"], 1031 | ["xpath=//button[@id='mtt-place-button']", "xpath:attributes"], 1032 | ["xpath=//div[@id='mcaio-footer']/div/div/button[3]", "xpath:idRelative"], 1033 | ["xpath=//button[3]", "xpath:position"] 1034 | ], 1035 | "value": "" 1036 | }, { 1037 | "id": "07704e42-6baf-4c7a-ad17-9616a248c575", 1038 | "comment": "", 1039 | "command": "click", 1040 | "target": "css=.mcaio--mcaio-cta-buttons-anothertrade", 1041 | "targets": [ 1042 | ["css=.mcaio--mcaio-cta-buttons-anothertrade", "css:finder"], 1043 | ["xpath=//button[@onclick='mcttrade62f278b1.handlePlaceAnother()']", "xpath:attributes"], 1044 | ["xpath=//div[@id='mcaio-footer']/div/div/button[3]", "xpath:idRelative"], 1045 | ["xpath=//button[3]", "xpath:position"], 1046 | ["xpath=//button[contains(.,'Place Another Order')]", "xpath:innerText"] 1047 | ], 1048 | "value": "" 1049 | }, { 1050 | "id": "ffcaa89a-4c46-4fe1-8890-0a1f975a4531", 1051 | "comment": "", 1052 | "command": "echo", 1053 | "target": "${account} Buying ${TICK} Test Successful!", 1054 | "targets": [], 1055 | "value": "" 1056 | }, { 1057 | "id": "44826bce-2def-4cd5-bb2b-c8acaba96136", 1058 | "comment": "", 1059 | "command": "end", 1060 | "target": "", 1061 | "targets": [], 1062 | "value": "" 1063 | }, { 1064 | "id": "c2c2b9c2-c463-4b26-8359-cd6a0cb46d9c", 1065 | "comment": "", 1066 | "command": "end", 1067 | "target": "", 1068 | "targets": [], 1069 | "value": "" 1070 | }, { 1071 | "id": "c756cbed-7f6b-48fa-b495-3dbd5eb29662", 1072 | "comment": "", 1073 | "command": "open", 1074 | "target": "https://github.com/sponsors/Prem-ium/sponsorships?sponsor=Prem-ium&tier_id=308205&preview=false", 1075 | "targets": [], 1076 | "value": "" 1077 | }, { 1078 | "id": "0e25581b-7181-4098-af03-1bb73b93c5b0", 1079 | "comment": "", 1080 | "command": "echo", 1081 | "target": "Please consider sponsoring this project by becoming a sponsor. Gold sponsors get an invite to a private repository with exclusive features, priority bug support, & frequent updates. If you are a Gold sponsor, please remember to use the private sponsors repo instead of this public version to reap the benefits of your support! Thank you for your support!", 1082 | "targets": [], 1083 | "value": "" 1084 | }] 1085 | }], 1086 | "suites": [{ 1087 | "id": "5c03e64a-0f9b-422a-b416-65be8986bacd", 1088 | "name": "Default Suite", 1089 | "persistSession": false, 1090 | "parallel": false, 1091 | "timeout": 300, 1092 | "tests": [] 1093 | }], 1094 | "urls": ["https://client.schwab.com/", "https://client.schwab.com/app/trade/tom/#/trade"], 1095 | "plugins": [] 1096 | } --------------------------------------------------------------------------------