【发布时间】:2020-11-13 09:06:33
【问题描述】:
基本上,我想让一个 cookie 点击器机器人在 1 个 chrome 选项卡上运行,但在不同的进程上运行,因为它会使机器人点击速度更快
import math
import os
from multiprocessing import Process, Pool, queues
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome("C:/Users/hazim/Desktop/Main/Coding/Projects/Webscraping/drivers/chromedriver")
web = "https://orteil.dashnet.org/cookieclicker/"
driver.get(web)
cookieX = "/html/body/div[2]/div[2]/div[15]/div[8]/div[1]"
def Click(xpath):
driver.find_element_by_xpath(xpath).click()
def SendKeys(xpath, input):
driver.find_element_by_xpath(xpath).send_keys(input)
def Wait(time, xpath):
WebDriverWait(driver, time).until(EC.presence_of_element_located((By.XPATH, xpath)))
def Run():
Wait(10, cookieX)
Click(cookieX)
processes = []
if __name__ == "__main__":
for i in range(os.cpu_count()):
print('registering process %d' % i)
processes.append(Process(target=Run))
processes[-1].start()
for process in processes:
process.join()
但我的问题是,当我运行它时,它会再打开 12 个选项卡,因为我有 12 个逻辑进程
我认为问题在于如何与其他进程共享内存
或
Selenium 像处理新对象一样处理多个进程。
如果我完全错了,你能在你的回答中解释一下这个概念吗?
【问题讨论】:
标签: python selenium multiprocessing selenium-chromedriver python-multiprocessing