我有一个硒机器人在社交网络上进行操作。我希望在他执行一定数量的操作后停止操作(以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
,该漫游器也不会停止。
您知道如何更正吗?
答案 0 :(得分:0)
由于缺少给出的代码,目前无法对您的问题给出具体的答案,但问题似乎是因为action()
方法不检查{ {1}}在其 中的self.counter_var
循环中执行。
类似以下的方法可能有效。将for
添加到yield
方法会将其转换为generator function,从而使其可迭代。完成此操作后,它将在该点的action()
循环的每次迭代时有效地“暂停”,并允许调用方检查for
的当前值(或它希望在每次迭代中执行的其他任何操作) )。
这是我建议的一些解释性注释:
self.counter_var