我想在每次循环运行时将index递增1,但我不知道如何实现。
这是我现在的代码:
categoryindex = categorylist[1]
while True:
try:
ignored_exceptions = (NoSuchElementException, StaleElementReferenceException)
WebDriverWait(driver, 20, ignored_exceptions=NoSuchElementException).until(EC.element_to_be_clickable((By.XPATH, f"//div[child::span[text()='{oddsnumber}'] and span[text()='{oddstype}']]"))).click()
except:
ignored_exceptions = (NoSuchElementException, StaleElementReferenceException,)
WebDriverWait(driver, 20, ignored_exceptions=NoSuchElementException).until(EC.element_to_be_clickable((By.XPATH, f"//div[text() ='{categoryindex}']"))).click()
我希望它从索引[1]开始,直到找到请求的元素。我尝试使用+ increment,但我不确定它如何与索引一起工作。
2条答案
按热度按时间lnlaulya1#
你可以使用
for
循环。也可以使用break
语句。这将在找到元素时中断循环,如果没有找到,它将递增索引并在下一次迭代中再次检查。disho6za2#
您可以使用
next()
函数来完成此操作,而无需使用任何索引。首先,您必须从您的可迭代对象创建一个迭代器。可迭代对象的值是您称为categorylist
的列表。要从它创建一个迭代器,只需使用iter(categorylist)
然后你可以通过调用
next()
函数来迭代你的列表。每次你调用它的时候,它会从第一个项目到最后一个项目返回列表项目。示例:
如果再次调用next,则将引发异常
StopIteration
有两种方法可以避免该错误:
如何在代码中使用它?
但是如何避免代码中的
StopIteration
错误。如果categorylist
上的迭代结束,则会引发错误!