不明白为什么这时不停止

时间:2019-01-01 20:58:19

标签: python

我有一个硒机器人在社交网络上进行操作。我希望在他执行一定数量的操作后停止操作(以10个为例)。我以这种方式初始化变量:

def __init__(self):
    self.browser = webdriver.Firefox()
    self.counter_var = int(0)
    self.max_var = int(10)

这是执行和计数动作的部分:

def action(self, accounts):
    for account in accounts[9:]:
        try:
            self.browser.get(account)
            time.sleep(5)
            like_button = self.browser.find_element_by_xpath(
                                u'//button[contains(@class, "Heart")]').click()
            self.count_actions()
            print(self.counter_var)
        except selenium.common.exceptions.NoSuchElementException:
            break

def count_actions(self):
    self.counter_var += 1

这是我尝试制作成main的循环:

while self.counter_var < self.max_var:
    searched_category = random.choice(pool_categories)
    accounts = self.load_category(searched_category)
    self.action(accounts)

但是,即使counter_var到达10,该漫游器也不会停止。

您知道如何更正吗?

1 个答案:

答案 0 :(得分:0)

由于缺少给出的代码,目前无法对您的问题给出具体的答案,但问题似乎是因为action()方法检查{ {1}}在其 中的self.counter_var循环中执行。

类似以下的方法可能有效。将for添加到yield方法会将其转换为generator function,从而使其可迭代。完成此操作后,它将在该点的action()循环的每次迭代时有效地“暂停”,并允许调用方检查for的当前值(或它希望在每次迭代中执行的其他任何操作) )。

这是我建议的一些解释性注释:

self.counter_var