我正在用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将名称转换为CSS选择器。
因此,如果您的名称是“启用产品解锁”,则选择器将是“启用产品解锁”。但是在这种情况下正确的css选择器是
“ .product.unlocked.enabled”,因为此元素具有多个类名,该类名由3个类名组成:“ product”,“ enabled”,“ unlocked”。
您应该使用“ product.unlocked.enabled”之类的名称,例如“ unlocked.enabled”,该名称也可以正确化,因为此元素仍然具有“ unlocked”和“ enabled”类。

08-27 10:58