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