python - 使用 Selenium 的 Cookie Clicker 机器人

标签 python python-3.x selenium-webdriver

我正在用Python(使用Selenium)制作一个脚本,当你运行它时,打开一个浏览器,转到Cookie clicker website并开始点击。这部分工作正常,但我尝试实现一个功能,当您有足够的 cookie 时,机器人会自动购买升级,如果没有,它会打印出“您没有足够的 cookie!”但由于某种原因,即使我有足够的cookie,脚本也总是会打印出来。有人看出问题了吗?

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Firefox()
browser.get('http://orteil.dashnet.org/cookieclicker/')
cookie = browser.find_element_by_id('bigCookie')
while True:
      cookie.click()
      try:
            product = browser.find_element_by_class_name('product unlocked enabled')
            product.click()
      except NoSuchElementException:
            print('You don't have enough cookies to buy that!')
            continue

最佳答案

这是因为 find_element_by_class_name 将 name 转换为 css 选择器。 因此,如果您的名称是“产品解锁已启用”,选择器将为“.产品解锁已启用”。但对于这种情况,正确的 css 选择器是 “.product.unlocked.enabled”,因为该元素有多个类名,由 3 个类名组成:“product”、“enabled”、“unlocked”。 您应该使用“product.unlocked.enabled”之类的名称,或者例如“unlocked.enabled”,这也是正确的,因为该元素仍然具有“unlocked”和“enabled”类。

关于python - 使用 Selenium 的 Cookie Clicker 机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871945/

相关文章:

python - 将 Perl 中的多维哈希转换为 Python 字典

selenium - 当警报存在时打开新选项卡 Selenium?

python - 使用变量在循环中从 DataFrame 中提取数据

python - 拦截来自第三方代码的消息

python将两个元组列表组合成一个大元组列表?

java - Selenium 测试运行速度太快,没有等待单选按钮被选中

python - 在脚本可以使用 Selenium + Python + Chrome 切换到它之前警报消失

python - 如何扩展输出显示以查看 Pandas DataFrame 的更多列?

python-3.x - 在 TensorFlow 中训练自定义数据集会出现错误

python-3.x - 如何在 Python3 中打印()一个字符串,无一异常(exception)?