Найти - Пользователи
Полная версия: После вставки из буфера дальнейший код программы не выполняется
Начало » Python для новичков » После вставки из буфера дальнейший код программы не выполняется
1 2 3
DexterMorgan
4kpt_IV
DexterMorganЗадержки в tkinter ставятся без использования sleep. Это ломает логику выполнения программы.Теперь поясните, что Вы хотите реализовать и я попробую Вам подсказать как это правильнее делать…

Webdriver'ом открывается сайт на котором есть определённая форма textarea, если я использую send.keys() и текст извлечённый из переменной (тексты около 7000-10000 символов), то webdriver интерпретирует текст в символы и каждый постепенно вставляет в форму, это занимает много времени и иногда зависает, хотел просто попробовать вставлять весь текст целиком из буфера. Sleep использовал для того, чтоб страница открываемая успела загрузится. Используя webdriver.Chrome(), открывается полноценный браузер, а хотелось бы использовать что-то иное или на крайний случай html.unit() но вот именно он и виснет на вставке send.keys() большого текста.

Надеюсь я выразился нормально
DexterMorgan
И да, хотел бы использовать requests или grab, но сайт сделан на 80% из javascript. И как я понял не одна из этих библиотек не имеет поддержки js
4kpt_IV
Не до конца
Откуда берется текст для вставки?
DexterMorgan
Текст лежит в переменной, вытянутый с другого сайта.
4kpt_IV
Т.е. Вы его просто скопировали в буфер обмена?
Какая ось?
DexterMorgan
Нет, до выполнения кода tk(), текст при помощи grab(), парсится с другого сайта.

Python 3.4.1
Ubuntu 14.04 LTS x64
4kpt_IV
Я тогда реально не пойму зачем здесь буфер обмена???
DexterMorgan
4kpt_IV
Я тогда реально не пойму зачем здесь буфер обмена???

Ну я ж написал, потому что если просто использовать вставку текста при помощи send.keys(text), и webdriver htmlunit текст по символьно вставляется, и программа виснет, из за большого количества символов
vanvanov
Вы это хотели?

#!/usr/bin/python3
import tkinter as tk
globs = {'clipboard':''}
# Вставить из буфера обмена
def clipboard_paste():
	# При возможных проблемах
	root.update()
	return root.clipboard_get()
# Периодически проверять буфер
def timed_update():
	new_clipboard = clipboard_paste()
	if new_clipboard and new_clipboard != globs['clipboard']:
		globs['clipboard'] = new_clipboard
		your_code()
	root.after(3000,timed_update)
	
def your_code(): # Здесь впишите свой код, выполняется в цикле
	print(globs['clipboard'])
	driver.find_element_by_xpath("//textarea[@class='text-check-main-textarea']").send_keys(Keys.CONTROL, 'v')
def your_code2():
	pass # Здесь впишите свой код, выполняется разово
root = tk.Tk()
timed_update()
your_code2()
root.mainloop()
DexterMorgan
vanvanov
globs = {'clipboard':''}
# Вставить из буфера обмена
def clipboard_paste():
# При возможных проблемах
root.update()
return root.clipboard_get()
# Периодически проверять буфер
def timed_update():
new_clipboard = clipboard_paste()
if new_clipboard and new_clipboard != globs:
globs = new_clipboard
your_code()
root.after(3000,timed_update)

def your_code(): # Здесь впишите свой код, выполняется в цикле
print(globs)
driver.find_element_by_xpath("//textarea").send_keys(Keys.CONTROL, ‘v’)
def your_code2():
pass # Здесь впишите свой код, выполняется разово
root = tk.Tk()
timed_update()
your_code2()
root.mainloop()

код работает, только он не вставляет в буфер текст который мне нужен, он вставляет только тот текст который уже был руками скопирован в буфер
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB