美文网首页
selenium 简单多线程并发

selenium 简单多线程并发

作者: 萤烛之光 | 来源:发表于2022-02-13 15:01 被阅读0次
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from time import sleep
import threading
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


sem = threading.Semaphore(2)  # 限制线程的最大数量
url = 'https://www.baidu.com/'
keys = ['java', 'python', 'go']

def search(driver,keyword):
    wait = WebDriverWait(driver, 5)
    el_location = wait.until(EC.presence_of_element_located((By.ID,"kw")))
    el_location.clear()
    el_location.send_keys(keyword)
    el_location = wait.until(EC.presence_of_element_located((By.ID, "su")))
    el_location.click()
    sleep(2)


def browser_work(keyword):
    options = Options()
    #options.add_argument('--headless')
    options.add_argument("--no-sandbox")
    options.add_argument('--disable-gpu')
    options.add_argument('window-size=1920x1080')
    browser = webdriver.Chrome(options=options)
    browser.get(url)
    print('browser is  working...')
    search(browser,keyword)
    sleep(1)
    browser.quit()


def run_thread(k):
    with sem:  # 锁定线程的最大数量
        print(threading.current_thread().name, k)
        print('-' * 20)
        browser_work(k)
        #sleep(1)
        print('*' * 20)

ts=[]

for k in keys:
    t = threading.Thread(target=run_thread,args=(k,))
    ts.append(t)
    t.start()
for t in ts:
    t.join()


Thread-1 java
--------------------
Thread-2 python
--------------------
browser is  working...
browser is  working...
********************
Thread-3 go
--------------------
********************
browser is  working...
********************

相关文章

网友评论

      本文标题:selenium 简单多线程并发

      本文链接:https://www.haomeiwen.com/subject/hpoclrtx.html