Селен не щелкает

Mr. Blue спросил: 31 июля 2018 в 09:53 в: python-3.x

Я создаю скрипт для cookieclickerbot с селеном chromedriver. Проблема в том, что он не нажимает cookie и не обновляется. Я играю с кодом около двух дней, но я не настолько опытен с classes.Please проверить его и посмотреть, если вы можете решить его и не беспокоиться о организации классов по-разному Я просто хочу, чтобы увидеть, что я сделал неправильно. Хотелось бы вы также объяснить это тоже я, чтобы я мог узнать больше о селен, питон и классы.

from selenium import webdriver
from time import sleep
class COOKIEBOT2000(object):    def __init__(self,upgrade=1,click=1,prints=1):
        self.upgrade = upgrade
        self.click = click
        self.prints = prints
        self.cursor = 0
        self.grandma = 0
        self.farm = 0
        self.mine = 0
        self.factory = 0
        self.temple = 0
        self.wizard = 0
        self.driver = webdriver.Chrome ("Path too chromedriver")
    def Clicker(self):
        try:
            if self.click == 1:
                if self.prints == 1:
                    print ("clicking")
                    print(self.driver)
                i = 0
                while i < 11:
                    click = driver.find_element_by_id("bigCookie")
                    click.click()
                    i = i + 1
                    print (i)
                if self.prints == 1:
                        click = driver.find_element_by_id("cookies")
                        click.click()
                        click = click.text
                        money = click.split("\n")
                        money = money[0].split(" ")
                        money = int(money[0])
                        print (money)
                self.Upgrader()
        except:
            self.Upgrader()
    def Upgrader(self):
        if self.upgrade == 1:
            if self.prints == 1:
                print ("Upgrading")
            try:
                click = driver.self.find_element_by_id("product0")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.cursor < 51:
                            click.click()
                            self.cursor = self.cursor + 1
                click = driver.self.find_element_by_id("product1")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.grandma < 7:
                            click.click()
                            self.grandma = self.grandma + 1
                click = driver.self.find_element_by_id("product2")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.farm < 41:
                            click.click()
                            self.farm = self.farm + 1
                click = driver.self.find_element_by_id("product3")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.mine < 41:
                            click.click()
                            self.mine = self.mine + 1
                click = driver.self.find_element_by_id("product4")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.factory < 51:
                            click.click()
                            self.factory = self.factory + 1
                click = driver.self.find_element_by_id("product5")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.temple < 51:
                            click.click()
                            self.temple = self.temple + 1
                click = driver.self.find_element_by_id("product6")
                if click.get_attribute("class") == "product unlocked enabled":
                    if self.wizard < 51:
                            click.click()
                            self.wizard = self.wizard + 1
                self.Clicker()
            except:
                self.Clicker()
                return
    def Start(self):
        self.driver.get("http://orteil.dashnet.org/cookieclicker/")
        sleep(1)
        if self.prints == 1:
            print("begun")
        self.Clicker()
CK = COOKIEBOT2000()
CK.Start()

1 ответ

Есть решение
Shivam Mishra ответил: 31 июля 2018 в 10:20

Это должно быть глупой ошибкой с вашей стороны, что в вашей функции Clicker заменять каждый экземпляр этого -

driver.find_element_by_id

на этот -

self.driver.find_element_by_id

А затем в своей функции Upgrader замените каждый экземпляр этого -

driver.self.find_element_by_id

на этот -

self.driver.find_element_by_id 

Выполнение этого заставит скрипт выполнять все клики непрерывно как часть вашей игры.

Mr. Blue ответил: 31 июля 2018 в 11:21
Вы тестировали сценарий? Потому что тогда я могу пометить это как решение сейчас!
Shivam Mishra ответил: 31 июля 2018 в 11:42
@ Mr.Blue да Я протестировал скрипт с упомянутыми изменениями. Он работает непрерывно без каких-либо ошибок.