selenium не кликает на галочку во второй прогон скрипта

mordorvox

Новичок
Пользователь
Окт 5, 2020
1
0
1
Дорый день!
Работаю на Win 10 в PyCharm Community Edition
Изучаю питона всего неделю, пробую написать скрипт для автоматизации части своей работы. Скрипт должен брать значение из экселя потом заходить на сайт, логиниться. И прогоняя список из 1-го столбца экселя совершать действия на сайте. Проблема в том, что на 2й заход основного скрипта не ставится галочка в окне.
Галочка ставится в (def cs_paste())
Вот сам код:


Python:
import win32com.client
from selenium import webdriver
from selenium.webdriver.common.by import  By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time


def cs_paste():                              #создать извещение, галочка, вставить кс, ок
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="O222_id"]/button'))).click()  # извещение
    g = 0
    while g == 0:
        try:
            WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="O551_id-boxLabelEl"]'))).click()  # галочка
            g = 1
        except TimeoutException:
            time.sleep(2)
            g = 0
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="O54D_id-inputEl"]'))).send_keys(ks) # вставить № кс
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="O53D_id"]/button'))).click()  # ok

def login():                                #залогинится на сайте
    element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="container"]/nav/div/ul/li[1]/a')))
    browser.execute_script("arguments[0].click();", element)
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="O78_id-inputEl"]'))).send_keys('login')
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="O7C_id-inputEl"]'))).send_keys('pass')
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="O88_id"]/button'))).click()
    browser.execute_script("arguments[0].click();", element)

def not_found():                          # проверка введеного кс
    x = WebDriverWait(browser, 2).until(EC.presence_of_element_located((By.ID, 'messagebox-1001-msg'))).text
    s = x.split()
    for m in s:
        if m == 'найден...':                 # не найден
            return 1
        elif m == 'закрыт.':          # закрыт
            return 2

def not_found_cancel():          #закрывает окно КС закрыт/не найден и окно ввода КС
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="button-1005-btnInnerEl"]'))).click()
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="O541_id"]/button'))).click()

def cs_list():
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="O292_id"]/button'))).click()

def cloce_cs():         #закрыть КС, ок
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="O402_id-btnInnerEl"]'))).click()
    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="button-1005-btnEl"]'))).click()

browser = webdriver.Chrome('D:\chromedriver.exe')
browser.get('[URL]https://eqc.fitorf.ru/notes.dll#[/URL]')

Excel = win32com.client.Dispatch('Excel.Application')



login()
k = 2                    #ячейка из 1й строки экселя
ks = 0                   #значение кс из экселя
while ks != None:
    wb = Excel.Workbooks.Open(u'D:\kstest')
    sheet = wb.ActiveSheet
    ks = sheet.Cells(k, 1).value
    cs_paste()
    not_found_request = 0
    while not_found_request == 0:                   #проверка отсутствия окна ввода № КС
        try:
            if not_found() == 1:                    #проверяем есть ли табличка КС закрыт/не найден
                sheet.Cells(k, 4).value = ks
                not_found_cancel()
                cs_list()
                not_found_request = 1
            elif not_found() == 2:
                sheet.Cells(k, 3).value = ks
                not_found_cancel()
                cs_list()
                not_found_request = 1
            else:
                not_found_request = 0
        except TimeoutException:
            try:
                WebDriverWait(browser, 2).until_not(EC.presence_of_element_located((By.XPATH, '//*[@id="O53D_id"]/button')))
                cloce_cs()
                cs_list()
                not_found_request = 1
            except TimeoutException:
                not_found_request = 0
    k += 1
    print(k)
    wb.Save()
    wb.Close()
print('все готово')
Excel.Quit()
browser.quit()
 
Последнее редактирование модератором:

Форум IT Специалистов