Уведомления

Группа в Telegram: @pythonsu

#1 Март 19, 2016 17:07:01

DexterMorgan
Зарегистрирован: 2016-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

4kpt_IV
DexterMorganЗадержки в tkinter ставятся без использования sleep. Это ломает логику выполнения программы.Теперь поясните, что Вы хотите реализовать и я попробую Вам подсказать как это правильнее делать…

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

Надеюсь я выразился нормально

Офлайн

#2 Март 19, 2016 17:08:39

DexterMorgan
Зарегистрирован: 2016-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

И да, хотел бы использовать requests или grab, но сайт сделан на 80% из javascript. И как я понял не одна из этих библиотек не имеет поддержки js

Офлайн

#3 Март 19, 2016 17:12:58

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

Не до конца
Откуда берется текст для вставки?

Офлайн

#4 Март 19, 2016 17:13:55

DexterMorgan
Зарегистрирован: 2016-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

Текст лежит в переменной, вытянутый с другого сайта.

Офлайн

#5 Март 19, 2016 17:20:02

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

Т.е. Вы его просто скопировали в буфер обмена?
Какая ось?

Офлайн

#6 Март 19, 2016 17:22:13

DexterMorgan
Зарегистрирован: 2016-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

Нет, до выполнения кода tk(), текст при помощи grab(), парсится с другого сайта.

Python 3.4.1
Ubuntu 14.04 LTS x64

Отредактировано DexterMorgan (Март 19, 2016 17:22:37)

Офлайн

#7 Март 19, 2016 17:29:21

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

Я тогда реально не пойму зачем здесь буфер обмена???

Офлайн

#8 Март 19, 2016 17:35:53

DexterMorgan
Зарегистрирован: 2016-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

4kpt_IV
Я тогда реально не пойму зачем здесь буфер обмена???

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

Офлайн

#9 Март 19, 2016 19:03:13

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

Вы это хотели?

#!/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()

Отредактировано vanvanov (Март 19, 2016 19:08:52)

Офлайн

#10 Март 21, 2016 11:30:18

DexterMorgan
Зарегистрирован: 2016-02-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

После вставки из буфера дальнейший код программы не выполняется

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()

код работает, только он не вставляет в буфер текст который мне нужен, он вставляет только тот текст который уже был руками скопирован в буфер

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version