如何使用python在函数中运行计时器?

时间:2018-06-28 12:21:55

标签: python multithreading python-3.x selenium selenium-webdriver

我有此代码:

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 :(得分:0)

您可以使用threading模块与另一个函数并行运行

import threading

def my_threaded_function():
    sleep(0.5)

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

可以通过使用args参数或通过使用lambda表达式来包装函数来将参数传递给您的函数。

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

thread = threading.Thread(target=lambda: my_threaded_function('arg1', 'arg2'))