не работает переключения "case" между скриптами питон

Мои переключения между скриптами не работают от слова совсем

from secrets import choice
from selenium import *
from time import *
from get_data import * 
from pars import *

def step_init():
    print('''
    1. Парсинг
    2. Добавление нового абонента
''')

def input_param():
    string = input("Выберите тип операции : ")

    match string: 
        case "parsing":
            parsing()
        case "add":
            stable()

first = step_init()
second = input_param()

Сначала должен отрабатываться принт, потом инпут и в зависимости от инпута должен срабатывать case который запустит один из двух файлов с скриптами.

Но почему то сначала скрипты срабатывают по очереди, и уж в конце светится выбор инпута. Как мне исправить?


упростил логику через условия до следующего, но результат неизменный!!!! Может тут что посоветуете?

from pkgutil import get_data
from secrets import choice
from selenium import *
from time import *
from get_data import * 
from pars import *

x = input('''Enter the number of operation : 
    1. Parsing
    2. Add client 
''')

if x == '1': 
    parsss()
elif x == '2':
    parsing()
else:
    print('!!! No such operation !!!')

файл get_data.py

from selenium import webdriver
from time import sleep
import pyautogui

class SBMS_start():
    def open(self):
        self.browser = webdriver.Chrome('C:\\\\Windows\\chromedriver.exe')
        self.browser.get('website')
        self.browser.maximize_window()

    def auth(self):
        browser = self.browser
        sleep(1)
        username_textbox = browser.find_element_by_name("user")
        username_textbox.send_keys("login")     #LOGIN
        sleep(1)
        password = browser.find_element_by_name("password")
        password.send_keys("pass")       #PASSWORD
        sleep(1)
        button1 = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div[5]/button')#ENTER
        button1.click() 

    def search_btn(self):
        browser= self.browser
        sleep(1)
        search = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[1]/div/div/div[1]/div/div[2]/ps-button[1]')
        search.click()

    def parse(self):
        browser = self.browser

        #-----------------------------------------------------------CLIENT INFORMATION--------------------------------------------------------------------------------------------------------
        sleep(1)
        name = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[1]')
        adress = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[2]')
        jur_type = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[3]')
        type = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[4]')
        gender = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[5]')
        birth = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[6]')
        document = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[7]')
        serial = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[8]')
        serial_number = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[9]')
        given = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[10]')
        given_date = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[1]/tr[11]')
        balance = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[2]/div/div[1]/div[1]/div[2]/table/tbody[2]/tr[2]')

        #-----------------------------------------------------------ABONENT INFORMATION--------------------------------------------------------------------------------------------------------
        ms_log = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[1]/tr')
        tarif = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[2]/tr[2]')
        main_balance = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[2]')
        number_class = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[4]')
        number_type = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[5]')
        kommutator = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[6]')
        icc = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[7]')
        imsi = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[8]')
        activ_date = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[9]')
        last_pay = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[12]')
        last_sum = browser.find_element_by_xpath('/html/body/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div[2]/table/tbody[5]/tr[13]')
        print('\n') #client info
        print('-----------------Client Information--------------')
        print(name.text)
        print(adress.text)
        print(jur_type.text)
        print(type.text)
        print(gender.text)
        print(birth.text)
        print(document.text)
        print(serial.text)
        print(serial_number.text)
        print(given.text)
        print(given_date.text)
        print(balance.text)
        print('\n') #abon info
        print('-----------------Abonent Information--------------')
        print('\n') #abon info
        print(ms_log.text)
        print(tarif.text)
        print(main_balance.text)
        print(number_class.text)
        print(number_type.text)
        print(kommutator.text)
        print(icc.text)
        print(imsi.text)
        print(activ_date.text)
        print(last_pay.text)
        print(last_sum.text)

class ms():
    def msisdn_put():
        sleep(1)
        pyautogui.moveTo(400,190,duration=0.5)
        pyautogui.click(400,190,duration=0.5)
        pyautogui.write("998118971")    #input of msisdn
        sleep(1)

def parsing():
    start =SBMS_start()
    start.open()
    start.auth()

    sleep(1)
    mouse = ms()
    ms.msisdn_put()

    start.search_btn()
    start.parse()

blabla = parsing()

файл pars.py

from functools import wraps
from os import write
from selenium import webdriver
from time import sleep
import pyautogui

class SBMS():
    def start(self):
        self.browser = webdriver.Chrome('C:\\\\Windows\\chromedriver.exe')
        self.browser.maximize_window()
        self.browser.get('website')

    def auth(self):
        browser = self.browser
        sleep(1)
        username = browser.find_element_by_name("user")
        username.send_keys("login")
        sleep(1)
        password = browser.find_element_by_name("password")
        password.send_keys("pass")
        sleep(1)
        autorisation = browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div[5]/button')
        autorisation.click() #ENTER
    
    def search(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div[1]/div/div/div[1]/div/div[2]/ps-button[1]').click()

    def registration(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="SHELL_MENU.ITEM0040"]/a').click()

    def add_abon(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="menu-CLIR.ITEM0020"]').click()

    def regular_msisdn(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="PS_SBMS_WORK_WINDOW"]/div[2]/div[2]/div/ng-form/div[1]/div[1]/div[1]/ps-radio-group/label[2]/span[2]').click()

    def kommutator(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="PS_SBMS_WORK_WINDOW"]/div[2]/div[2]/div/ng-form/div[1]/div[2]/ps-splitter/ps-splitter-zone[1]/div/div[1]/div[1]/table/tbody/tr[5]/td[2]/div/div[1]/div').click()
    
    def gsm_hw(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="PS_SBMS_WORK_WINDOW"]/div[10]/div/ps-list-item[2]/div').click()

    def free_numbers(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="PS_SBMS_WORK_WINDOW"]/div[2]/div[2]/div/ng-form/div[1]/div[2]/ps-splitter/ps-splitter-zone[1]/div/div[1]/div[1]/table/tbody/tr[7]/td[2]/div/div/div[2]/ps-list-item[74]/div').click()

    def sim_cart(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="PS_SBMS_WORK_WINDOW"]/div[2]/div[2]/div/ng-form/div[1]/div[2]/ps-splitter/ps-splitter-zone[2]/div/ps-tabs/div[1]/ul/li[2]/a').click()

    def find(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="PS_SBMS_WORK_WINDOW"]/div[2]/div[2]/div/ng-form/div[2]/div/ps-button[1]').click()

    def cancel(self):
        browser = self.browser
        browser.find_element_by_xpath('//*[@id="SSW_WORKFRAMES_CONTAINER"]/div/div/div/div/div/div/ps-button[2]').click()

class mouse_move():
    def initialise():
        pyautogui.PAUSE = 1.5
        pyautogui.FAILSAFE = True 

        pyautogui.size()
        pyautogui.position()

        pyautogui.moveTo(370,190,duration=0.5)
        pyautogui.click(370,190,duration=0.5)
        pyautogui.write("777772194")    #input of msisdn

    def triple_dots():
        pyautogui.moveTo(687,244,duration=0.5)
        pyautogui.click(687,244,duration=0.5)

    def find():
        pyautogui.moveTo(637,860,duration=0.5)
        pyautogui.click(637,860,duration=0.5)

    def msisdn():
        pyautogui.moveTo(876,777,duration=0.5)
        pyautogui.click(876,777,duration=0.5)

    def ICC():
        pyautogui.moveTo(865,675,duration=0.5)
        pyautogui.click(865,675,duration=0.5)

class stable():
    def stage():
        start1 = SBMS()
        start1.start()
        start1.auth()

        mouse = mouse_move()
        mouse_move.initialise()

        start1.search()
        sleep(1)
        start1.registration()
        sleep(1)
        start1.add_abon()

        sleep(1)
        mouse_move.triple_dots()

        sleep(1)
        start1.regular_msisdn()
        sleep(1)
        start1.kommutator()
        sleep(1)
        start1.gsm_hw()
        sleep(1)
        start1.free_numbers()

        sleep(1)
        mouse_move.find()

        sleep(1)
        mouse_move.msisdn()

        sleep(1)
        start1.sim_cart()

        sleep(1)
        mouse_move.ICC()

        sleep(1)
        start1.find()
        sleep(5)
        start1.cancel()

def parsss():
    go = stable()
    stable.stage()

parss = parsss()

Ответы (1 шт):

Автор решения: CrazyElf

В подключаемых скриптах всё, что не должно сразу выполняться при подключении, должно быть обёрнуто в такую проверку:

if __name__ == "__main__":

Например, вы делаете такой импорт:

from pars import *

Файл pars.py у вас заканчивается таким кодом:

def parsss():
    go = stable()
    stable.stage()

parss = parsss()

Этот код сразу выполнится при таком импорте. Но я так понимаю, вы этого не хотите при импорте, вы хотите, чтобы импортировались только функции из этого файла. Тогда вы должны оформить этот файл так:

def parsss():
    go = stable()
    stable.stage()

if __name__ == "__main__":
    parss = parsss()

В этом случае строка parss = parsss() выполнится только если запускать сам скрипт pars.py. А если его импортировать, эта строка уже не будет выполняться.

Тоже самое нужно сделать со всеми вашими файлами, которые вы импортируете. В стандартных библиотеках такие проверки уже есть, если они там нужны.

→ Ссылка