Как запустить таймер в функции, используя python? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть этот код:

def Transalted_Content(content):

driver= webdriver.Chrome("H:\\CI\\chromedriver.exe")
driver.get('https://translate.shell.com/')

translate_from = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "textarea.form-control#translateText")))
translate_from._parent.execute_script("""
var elm = arguments[0], text = arguments[1];
if (!('value' in elm))
  throw new Error('Expected an <input> or <textarea>');
elm.focus();
elm.value = text;
elm.dispatchEvent(new Event('change'));
""", translate_from, content)
driver.find_element_by_css_selector("input#translate").click()

time.sleep(3.5)                                   

translated_text_element= driver.find_element_by_id('translatedText')
translated_text=translated_text_element.get_attribute('value')

driver.close()

return translated_text

Иногда время ожидания chrome истекает, поэтому есть способ, которым я могу написать цикл while как функцию отдельно и запускать его параллельно при каждом вызове этой функции, чтобы он мог выполнить:

 driver.refresh()

и можете ли продолжать делать это через интервал времени (если он превышает интервал времени)?

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете запустить функцию параллельно с другой, используя модуль threading

import threading

def my_threaded_function():
    sleep(0.5)

thread = threading.Thread(target=my_threaded_function)
thread.start()

Аргументы могут быть переданы вашей функции с помощью параметра args или с помощью лямбда-выражения для переноса вашей функции.

thread = threading.Thread(target=my_threaded_function, args=['arg1', 'arg2'])

Или

thread = threading.Thread(target=lambda: my_threaded_function('arg1', 'arg2'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...