我有一个硒元素,当访问该页面时,我想单击链接以下载文件, 并非所有页面都有此链接。
所以我的问题是,如果页面有链接,我将能够单击该链接,如果没有链接,则继续执行其他一些任务。
我的问题是在没有链接的页面上,它导致程序停止并崩溃。 我正在寻找一种可能的方法来单击该链接,如果该链接不存在,请继续进行其他操作。
try:
instructions= WebDriverWait(self.driver,5).until(EC.element_to_be_clickable(
(By.XPATH,"//dl//div[@class='paper_instructions_view']/a")))
if instructions:
instructions.click
pass
finally:
enter_amount = self.driver.find_element_by_xpath("//input[@id='id_bid']")
enter_amount.send_keys(get_budget)
time.sleep(5)
apply= WebDriverWait(self.driver,200).until(EC.element_to_be_clickable(
(By.XPATH,"//input[@id='apply_order']"))).submit()
self.click_on_order_button_from_inside()
答案 0 :(得分:1)
首先仔细分析脚本引发的错误。 在示例中“ finally”之后的第一行中,您尝试查找ID =“ id_bid”的元素,但是始终会调用此代码,如果缺少此对象,则会出错。 您只需要将所有可能失败的动作(例如,所有find_element_by ...)移至try子句。 关于try的更多信息,最后,除了: https://docs.python.org/3/tutorial/errors.html#defining-clean-up-actions
答案 1 :(得分:0)
问题是您处理异常的方式。与第一个答案一样,无论是否存在按钮,它都是指示,否则最终块将始终被执行。假设您正在检查页面上的instructions
链接。您可以执行以下操作:
try:
instructions= WebDriverWait(self.driver,5).until(EC.element_to_be_clickable(
(By.XPATH,"//dl//div[@class='paper_instructions_view']/a"))).click()
except NoSuchElementException:
pass
上面的代码将查找instructions link
,如果找到了它将被单击,否则将只是pass
。