QA Engineering/Tool & Automation

Faucet에서 자동으로 자금을 전송 받아보자

일해라폴폴 2024. 2. 1. 14:07
반응형

아래 결론 부터 함 보고 시작 할께요~

 

XRP 관련 테스트 중인데, 테스트 넷에서 XRP가 필요해 testnet faucet을 통해 내 지갑에 테스트용 XRP를 알아서 잘 채우도록
만들어 놓았습니다

손쉽게 전송 하는 방법도 만들어 봐야 겠네요...
1. Faucet에서 내 지갑으로 전송하는 함수

def exec_transferXRP():
    # 1. Destination Address 입력
    input_dest_box = driver.find_element(By.ID, 'destination_address')
    input_dest_box.clear()
    time.sleep(2)
    input_dest_box.send_keys(destination_account)
    print(f"{datetime.now()} || XRP를 전송할 주소는 {destination_account} 입니다")
    time.sleep(2)

    # 2. Initialize 수행
    init_btn = driver.find_element(By.ID, 'init_button')
    init_btn.click()
    print(f"{datetime.now()} || Initialize를 시작 하겠습니다. 이 작업은 10~30초 정도 소요됩니다")
    time.sleep(2)
    
    # 3. Send amount 입력
    amount = 9980000000
    input_amount_box = driver.find_element(By.ID, 'send_xrp_payment_amount')
    input_amount_box.clear()
    time.sleep(1)
    input_amount_box.send_keys(amount)
    loading_time = 30
    exec_Loadingbar("Initializing", loading_time)
    print(f"{datetime.now()} || Initialize가 완료 되었습니다")
    print(f"{datetime.now()} || XRP faucet에서 {amount/1000000} XRP를 전송하겠습니다")
    
    # 4. Send XRP
    print(f"{datetime.now()} || XRP 전송 중입니다. 이 작업은 10초 정도 소요 됩니다")
    send_xrp_btn = driver.find_element(By.ID, 'send_xrp_payment_btn')
    send_xrp_btn.click()
    loading_time = 10
    exec_Loadingbar("Transferring", loading_time)

 2. 내 지갑의 발란스를 조회 하는 함수
- 단, CEX의 지갑은 Tag 주소까지 확인할 방법이 없어 반드시 개인 지갑으로만 조회 가능함

def get_xrpBalanceInfo():
    headers = {'Content-Type': 'application/json'}
    data = {
        "method": "account_info",
        "params": [
            {"account": destination_account, "ledger_index": "current", "queue": True}
        ]
    }
    response = requests.post(network_url, data=json.dumps(data), headers=headers)
    if response.status_code == 200:
        result = response.json()
        balance = float(result['result']['account_data']['Balance']) / 1000000
        txhash = result['result']['account_data']['PreviousTxnID']
        print (f"\n{datetime.now()} || {destination_account} XRP Wallet Balance : {balance}")
        print (f"{datetime.now()} || Recently txhash : {txhash}\n")
    else:
        print(f"\n{datetime.now()} || Error: {response.status_code}, {response.text}\n")

실행을 위한 정보 입력

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from datetime import datetime
import requests
import json
import time
import sys

# destination_account = input(f"{datetime.now()} || 테스트넷에서 XPR를 받을 주소를 넣어 주세요 → ") # r9RPaeCRxMz1mvZASx785yJ2YCNdSpNN7E
print ("\n■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■")
print (f"\n{datetime.now()} || XRP Faucet에서 XRP를 전송 하겠습니다")
destination_account = "알아서 주소 입력"
xrp_testnet_faucet= "https://xrpl.org/tx-sender.html"
xrp_testnet_explorer = "https://testnet.xrpl.org/accounts/"
network_url = "https://s.altnet.rippletest.net:51234/" # Testnet
# network_url = "https://xrplcluster.com/" # Mainnet
반응형