如何在Python 3中使用另一个Selenium的webdriver(带线程)上的休眠时间

问题描述 投票:1回答:1

我一直在两个网站上工作,我试图通过使用线程库在另一个Selenium的驱动程序上使用一个驱动程序的休眠时间,但到目前为止,它似乎没有像我想象的那样工作。所以,我正在寻找解释,建议并解决我的问题。

这是一个示例代码。

import threading
from selenium import webdriver
import time

def go_Yahoo():
    driver = webdriver.Firefox()
    driver.get('https://www.yahoo.com/')
    time.sleep(10)
    driver.find_element_by_xpath('//*[@id="uh-search-box"]').clear()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="uh-search-box"]').send_keys('facebook')
    time.sleep(7)
    driver.find_element_by_xpath('//*[@id="uh-search-button"]').click()


def go_Bing():
    driver = webdriver.Firefox()
    driver.get('https://www.bing.com/')
    time.sleep(5)
    driver.find_element_by_xpath('//*[@id="sb_form_q"]').clear()
    time.sleep(3)
    driver.find_element_by_xpath('//*[@id="sb_form_q"]').send_keys('facebook')
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="sb_form_go"]').click()

t1 = threading.Thread(target=go_Yahoo())
t2 = threading.Thread(target=go_Bing())
t1.start()
t2.start()
t1.join()
t2.join()

所以,我认为当'go_Yahoo()'睡着了,'go_Bing()'会启动。但是,我不知何故。我想知道为什么以及如何解决它。

谢谢。

multithreading python-3.x selenium
1个回答
0
投票

如果我们在多线程模式下启动两个驱动器,并不意味着它将在驱动程序1的一个步骤中运行,而在驱动程序2中运行另一个步骤,依此类推。如果您的机器使用双处理器,两者都将并行运行。它可以让两个司机一次睡觉。我们无法决定每个线程内的步骤顺序。

如果您的机器只有一个处理器,则每个线程将在分配的处理器时间内以时间切片模式执行。但它看起来像并行,即使它使用单处理器。

即使我们在每一步之后设置time.sleep。我们无法控制另一个线程的休眠时间。

© www.soinside.com 2019 - 2024. All rights reserved.