Я работаю над проектом, который требует заполнения формы (чтения входных данных из листа Excel) и получения выходного значения (и сохранения его в листе Excel) при нажатии кнопки отправки. Мне удалось автоматизировать этот процесс с помощью Python + Selenium, но требуется некоторое время, чтобы go по всем строкам файла xls.
Примечание. XLUtils
- это еще один файл python с вспомогательные функции. Я также использую openpyxl
и xlrd
для чтения / записи из файла excel
Вот код (NO THREADS) на высоком уровне:
#Initial set-up
url = "https://url.com"
driver = webdriver.Chrome(options=options, executable_path=r'C:/chromedriver.exe')
driver.get(url)
driver.maximize_window()
#Location of the input sheet
path = "C:/Book1.xlsx"
#Get number of rows from the excel input sheet
rows = XLUtils.getRowCount()
#Log into website
XLUtils.login(driver)
#Loop through all records from the input sheet
for row_num in range(4, rows + 1):
try:
XLUtils.fill_out_form(driver, path, row_num)
except:
print("Element not found and test failed")
continue
#Log out and close Browser
XLUtils.logout(driver)
Вот пример многопоточности, но он довольно простой, как показано ниже:
def test_logic():
url = "https://www.google.com"
driver = webdriver.Chrome(options=options, executable_path=r'C:/chromedriver.exe')
driver.get(url)
driver.maximize_window()
search_bar = driver.find_element_by_xpath("//input[@name='q']").send_keys("python threading")
time.sleep(1)
# driver.quit()
num_browsers = 5 # Number of browsers to spawn
thread_list = list()
# Start test
for i in range(num_browsers):
t = threading.Thread(name='Test {}'.format(i), target=test_logic)
t.start()
time.sleep(1)
print(t.name + ' started!')
thread_list.append(t)
# Wait for all threads to complete
for thread in thread_list:
thread.join()
print('Test completed!')
Мой вопрос: : Как я могу объединить два кода для достижения моей цели? Это просто вопрос обертывания процесса, который я хочу воспроизвести в функции, а затем передачи этой функции в часть кода потоковой передачи? Если да, то как мне удастся l oop весь xls-файл партиями по 5 и прочитать / записать каждый из / в полученный файл excel.
Это сложная проблема, и я, честно говоря, не нашел аналогичный вопрос по этому поводу, поэтому любая помощь будет принята с благодарностью.