【问题标题】:Multithreading printing with python使用python进行多线程打印
【发布时间】:2019-09-03 16:07:25
【问题描述】:

我正在尝试在使用多线程的同时使用 Selenium 来自动化网站。

目前,我在尝试通过测试用例代码中的代码打印日志信息时遇到了问题。

这是我正在使用的代码的 sn-p。

测试用例代码 -

def test_logic():

    driver = webdriver.Chrome(executable_path=r'./chromedriver')
    url = 'https://discordapp.com/channels/'
    driver.get(url)


    print(datetime.now(),'Discord Launched, Searching For Fields.')
    inputElement = driver.find_element_by_xpath("//*[@type='email']")
    inputElement.send_keys('coding@yahoo.com')
    print(datetime.now(),'Typing in email bar')

    inputElement = driver.find_element_by_xpath("//*[@type='password']")
    inputElement.send_keys('ilove2code')
    print(datetime.now(),'Typing in password bar')



    time.sleep(20)
    driver.quit()

多线程代码 -

def multi():

    N = 2   # Number of browsers to spawn
    thread_list = list()

    # Start test
    for i in range(N):
        t = threading.Thread(name='Task {}'.format(i), target=test_logic)
        t.start()
        time.sleep(1)
        print (t.name , 'started!')
        thread_list.append(t)

    # Wait for all thre<ads to complete
    for thread in thread_list:
        thread.join()

    print ('Test completed!')

目前这是我的输出 -

Task 0 started!
Task 1 started!
2019-09-03 10:50:37.914244 Discord Launched, Searching For Fields.
2019-09-03 10:50:38.248029 Discord Launched, Searching For Fields
2019-09-03 10:50:38.418392 Typing in email bar
2019-09-03 10:50:38.569400 Typing in password bar
2019-09-03 10:50:38.833535 Typing in email bar
2019-09-03 10:50:38.939082 Typing in password bar

Test completed!

我正在努力实现这个输出

Task 0 started!
Task 1 started!
2019-09-03 10:50:37.914244 Task 0 Discord Launched, Searching For Fields.
2019-09-03 10:50:38.248029 Task 1 Discord Launched, Searching For Fields
2019-09-03 10:50:38.418392 Task 0 Typing in email bar
2019-09-03 10:50:38.569400 Task 0 Typing in password bar
2019-09-03 10:50:38.833535 Task 1 Typing in email bar
2019-09-03 10:50:38.939082 Task 1 Typing in password bar

Test completed!

任何帮助和建议将不胜感激。谢谢你。

【问题讨论】:

    标签: python multithreading selenium-webdriver logging


    【解决方案1】:

    在函数test_logic内,可以使用以下函数:

    t = threading.current_thread()
    print(datetime.now(), t.name, 'Typing in password bar')
    

    link 涵盖了解释和您可以使用的其他功能。 current_thread 帮助获取 Thread 对象。然后您可以使用属性name 来获取您需要的标识符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      相关资源
      最近更新 更多