Fork me on Github

selenium+ThreadPoolExecutor填写问卷

 1 import time
 2 from concurrent.futures.thread import ThreadPoolExecutor
 3 from selenium.webdriver import Chrome
 4 from selenium.webdriver.chrome.options import Options
 5 from selenium.webdriver.common.by import By
 6 from selenium.webdriver.common.action_chains import ActionChains
 7 
 8 
 9 def star_search():
10     opt = Options()
11     # 防止被识别
12     opt.add_experimental_option("detach", True)
13     opt.add_argument('--disable-blink-features=AutomationControlled')
14     web = Chrome(options=opt)
15     web.get("https://wjx.cn/vm/*******.aspx")
16 
17     # 单选1,  //*[@id="div1"]/div[2]/div[2]/div 选项2
18     num = 2
19     web.find_element(By.XPATH, f'//*[@id="div1"]/div[2]/div[{num}]/div').click()
20 
21     # 多选2  //*[@id="div2"]/div[2]/div[2]/div
22     web.find_element(By.XPATH, '//*[@id="div2"]/div[2]/div[1]/div').click()
23 
24     # 填空3
25     web.find_element(By.XPATH, '//*[@id="q3"]').send_keys("测试填空")
26 
27     # 点击提交
28     web.find_element(By.XPATH, '//*[@id="ctlNext"]').click()
29     time.sleep(2)
30 
31     # 验证确认
32     yan = web.find_element(By.XPATH, '//*[@id="alert_box"]/div[2]/div[2]')
33     if yan:
34         yan.click()
35         time.sleep(2)
36 
37     # 验证点击
38     cli = web.find_element(By.XPATH, '//*[@id="SM_BTN_1"]/div[1]/div[4]')
39     if cli:
40         cli.click()
41         time.sleep(5)
42 
43     # 拖拽验证
44     btn = web.find_element(By.XPATH, '//*[@id="nc_1__scale_text"]')
45     if btn:
46         ActionChains(web).drag_and_drop_by_offset(btn, 300, 0).perform()
47 
48 
49 if __name__ == '__main__':
50     for n in range(2):
51         with ThreadPoolExecutor(4) as t:
52             for i in range(4):
53                 t.submit(star_search)

 

posted @ 2022-07-15 14:01  昂昂呀  阅读(46)  评论(0)    收藏  举报