循环中的动作链只工作一次(Selenium/Python)
Action Chain in loop works only once(Selenium/Python)
我正在尝试实现一个 cookie Clicker 机器人。 Cookie Clicker 这只是一个 愚蠢 简单的游戏,您可以在其中点击 Cookie 以赚取更多的 Cookie。你可以看看那个杰作here。
机器人应该只是打开页面,然后点击 cookie 4000 次,但它只点击了一次。
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://orteil.dashnet.org/cookieclicker/")
driver.implicitly_wait(10)
cookie = driver.find_element(By.ID, "bigCookie")
actions = ActionChains(driver)
actions.click(cookie)
for i in range(4000):
actions.perform()
我在控制台中看到了这些消息。 我 我的代码有什么问题?
你在这里要做的是给枪上膛一次,然后循环扣动扳机几次...
做你想做的事,你应该稍微改变你的代码如下:
actions = ActionChains(driver)
for i in range(4000):
actions.click(cookie)
actions.perform()
顺便说一句,我猜这段代码仍然无法工作,因为在第一次点击 cookie
元素后,即使它会再次出现,它也将是一个新的另一个元素,即使它可以与相同的元素一起定位定位器。
所以尝试再次点击它会导致 StaleElementReferenceException
.
要完成这项工作,您必须每次都重新定位 cookie
元素,如下所示:
actions = ActionChains(driver)
for i in range(4000):
cookie = wait.until(EC.visibility_of_element_located((By.ID, "bigCookie")))
actions.click(cookie)
actions.perform()
我正在尝试实现一个 cookie Clicker 机器人。 Cookie Clicker 这只是一个 愚蠢 简单的游戏,您可以在其中点击 Cookie 以赚取更多的 Cookie。你可以看看那个杰作here。
机器人应该只是打开页面,然后点击 cookie 4000 次,但它只点击了一次。
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://orteil.dashnet.org/cookieclicker/")
driver.implicitly_wait(10)
cookie = driver.find_element(By.ID, "bigCookie")
actions = ActionChains(driver)
actions.click(cookie)
for i in range(4000):
actions.perform()
我在控制台中看到了这些消息。 我 我的代码有什么问题?
你在这里要做的是给枪上膛一次,然后循环扣动扳机几次... 做你想做的事,你应该稍微改变你的代码如下:
actions = ActionChains(driver)
for i in range(4000):
actions.click(cookie)
actions.perform()
顺便说一句,我猜这段代码仍然无法工作,因为在第一次点击 cookie
元素后,即使它会再次出现,它也将是一个新的另一个元素,即使它可以与相同的元素一起定位定位器。
所以尝试再次点击它会导致 StaleElementReferenceException
.
要完成这项工作,您必须每次都重新定位 cookie
元素,如下所示:
actions = ActionChains(driver)
for i in range(4000):
cookie = wait.until(EC.visibility_of_element_located((By.ID, "bigCookie")))
actions.click(cookie)
actions.perform()