【发布时间】:2014-03-19 13:56:18
【问题描述】:
我不是 python 专家,我不理解对我来说似乎非常基本的东西。就是这样:
我正在使用 selenium 获取网页,在特定位置查找链接(实际上是指向“下一页”的链接),如果存在链接,请单击它并重新开始。我的一段代码是这样的:
check = True
while check:
#do something
#check if there is a link to a "next page":
try:
nextPageLink=driver.find_element_by_xpath("//div[@class='pgLinks']/a[3]")
nextPageLink.click()
time.sleep(timeToCharge)
except:
check = False
此代码只运行一次。它找到到下一页的链接,点击它,但它不再运行循环,就像它通过 except 中的代码并将变量检查设置为 False 一样。
知道为什么会这样以及我应该怎么做吗?
谢谢
【问题讨论】:
-
您是否尝试将
print语句添加到except块以查看它是否被触发? @sshashank124 这会使代码只运行一次,OP 希望它继续循环。 -
问题可能是
link在您使用之前没有定义(实际上应该是driver.get(nextPageLink))?一般来说,最好不要使用纯except:语句,因为这样你会捕获所有异常,但通常你想捕获一个特定的异常。 -
要单击链接,请致电
nextPageLink.click()。 -
@user1862963 基于@IanAuld 的评论,您还可以将
except子句扩展为except Exception as e:,然后通过print(e)(或print e,如果您正在使用)打印出异常蟒蛇2)。根据下面@Daniel Roseman 的回答,这可能会提供对正在发生的事情的一些见解,并让您了解应该真正捕获哪些异常。 -
我在 try 和 except 块中都添加了打印:try 块工作正常,它会找到链接并点击它;除了块也触发了
标签: python loops selenium logic