如何在Pyhton3中使用另一个Selenium驱动程序(带线程)的休眠时间

时间:2017-12-21 03:25:58

标签: multithreading python-3.x selenium

我一直在两个网站上工作,我试图通过使用线程库在另一个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()'会踢。然而,我不知何故。我想知道为什么以及如何解决它。

THX。

1 个答案:

答案 0 :(得分:0)

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

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

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