【问题标题】:How to click on the Cookie numerous times in-order to play cookie clicker within https://orteil.dashnet.org/cookieclicker/ using Selenium and Python如何使用 Selenium 和 Python 在 https://orteil.dashnet.org/cookieclicker/ 中多次单击 Cookie 以播放 cookie clicker
【发布时间】:2021-01-05 21:28:18
【问题描述】:

我正在尝试制作一个简单的 selenium 程序来播放 cookie clicker 从我所看到的我无法理解为什么它在这里不起作用是我的代码

from selenium import webdriver
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(5)

cookie = driver.find_elements_by_id('bigCookie')
cookie_count = driver.find_elements_by_id('cookies')
items = [driver.find_elements_by_id('productPrice' + str(i)) for i in range (1,-1,-1)]

actions = ActionChains(driver)
actions.click(cookie)

for i in range(5000):
    actions.perform()

这是我遇到的错误

    Traceback (most recent call last):
  File "c:/Users/ffl_s/Desktop/Botting/My Bot/cookie.py", line 15, in <module>
    actions.click(cookie)
  File "C:\Users\ffl_s\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\action_chains.py", line 102, in click
    self.move_to_element(on_element)
  File "C:\Users\ffl_s\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\action_chains.py", line 273, in move_to_element
    self.w3c_actions.pointer_action.move_to(to_element)
  File "C:\Users\ffl_s\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\actions\pointer_actions.py", line 42, in move_to
    raise AttributeError("move_to requires a WebElement")
AttributeError: move_to requires a WebElement
PS C:\Users\ffl_s\Desktop\Botting\My Bot> [21704:18120:0918/223803.402:ERROR:device_event_log_impl.cc(208)] [22:38:03.402] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.

【问题讨论】:

  • 您好,请问有什么问题吗?
  • 当我尝试运行代码时,它会打开正确的网站,但之后没有任何反应
  • 试试这个动作链。
  • 是的也有同样的问题
  • selenium 的设置不正确。您可以简单地使用命令提示符进行 pip install 。 Chrome 驱动程序管理器可确保您使用适合您正在使用的 chrome 版本的正确驱动程序。如果你只是安装它并做底部你的问题应该得到解决。

标签: javascript python selenium css-selectors webdriverwait


【解决方案1】:

如果您想点击 5000 次并显示 cookie 文本,您可以这样做。 只需 pip install webdriver-manager 即可修复您的二进制文件。

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://orteil.dashnet.org/cookieclicker/')
for i in range(5000):
   ActionChains(driver).move_to_element(driver.find_element_by_id('bigCookie')).click().perform()
items = driver.find_element_by_id('cookies')
print(items.text)

【讨论】:

  • 只需删除其余部分并使用它。
  • 这就是我尝试过的,当我尝试运行它时仍然失败
  • 不让我进入 cmets 的邮件应该寄到哪里?
【解决方案2】:

要多次点击Cookie来播放cookie clicker,您需要为element_to_be_clickable()诱导WebDriverWait,您可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    driver.get('https://orteil.dashnet.org/cookieclicker/')
    for i in range(100):
      driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#bigCookie"))))
    print(driver.find_element_by_css_selector("#cookies").text)
    
  • 控制台输出:

    80 cookies
    per second : 0
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2021-10-19
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多