#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (c) 2023 tecnovert # Distributed under the MIT software license, see the accompanying # file LICENSE or http://www.opensource.org/licenses/mit-license.php. """ cd /tmp wget -4 https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip 7z x chromedriver_linux64.zip sudo mv chromedriver /opt/chromedriver114 python tests/basicswap/extended/test_xmr_persistent.py python tests/basicswap/selenium/test_offer.py """ import json import time from urllib.request import urlopen from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def test_html(): node1_url = 'http://localhost:12701' node2_url = 'http://localhost:12702' driver = webdriver.Chrome(service=Service('/opt/chromedriver114')) driver.get(node1_url + '/newoffer') time.sleep(1) select = Select(driver.find_element(By.ID, 'coin_from')) select.select_by_visible_text('Bitcoin') select = Select(driver.find_element(By.ID, 'coin_to')) select.select_by_visible_text('Monero') driver.find_element(By.NAME, 'amt_from').send_keys('1') driver.find_element(By.NAME, 'amt_to').send_keys('2') driver.find_element(By.NAME, 'continue').click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer1_id = offer_link.text.split(' ')[2] driver.get(node1_url + '/newoffer') time.sleep(1) select = Select(driver.find_element(By.ID, 'coin_from')) select.select_by_visible_text('Particl') select = Select(driver.find_element(By.ID, 'coin_to')) select.select_by_visible_text('Monero') driver.find_element(By.NAME, 'amt_from').send_keys('3') driver.find_element(By.NAME, 'amt_to').send_keys('4') driver.find_element(By.NAME, 'continue').click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer2_id = offer_link.text.split(' ')[2] driver.get(node1_url + '/offer/' + offer1_id) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'repeat_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer3_id = offer_link.text.split(' ')[2] offer3_json = json.loads(urlopen(node1_url + '/json/offers/' + offer3_id).read())[0] assert (offer3_json['coin_from'] == 'Bitcoin') assert (offer3_json['coin_to'] == 'Monero') driver.get(node1_url + '/offer/' + offer2_id) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'repeat_offer'))).click() time.sleep(1) # Add time for setupCustomSelect to fire WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'check_offer'))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'submit_offer'))).click() time.sleep(1) offer_link = driver.find_element(By.XPATH, "//a[contains(text(),'Sent Offer')]") offer4_id = offer_link.text.split(' ')[2] offer4_json = json.loads(urlopen(node1_url + '/json/offers/' + offer4_id).read())[0] assert (offer4_json['coin_from'] == 'Particl') assert (offer4_json['coin_to'] == 'Monero') driver.close() print('Done.') if __name__ == '__main__': test_html()