我有一个selenium,它假设在访问页面时点击链接下载文件,而不是所有页面都有这个链接。
所以我的问题是,如果页面上有链接,就可以点击它,而如果没有,就继续做一些其他任务。
我的问题是在没有链接的页面上,它会导致程序停止并崩溃。我正在寻找一种可能的方式点击链接,如果链接不在那里,就继续做其他事情。
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()
首先仔细分析脚本抛出的错误。在你的例子中;最后";您正试图找到ID为"的元素;id_bid";,但是这个代码总是被调用的,如果没有这个对象,就会出现错误。您只需要将所有可能失败的操作(例如,所有find_element_by…(移动到try子句。更多关于尝试的信息,除了,最后:https://docs.python.org/3/tutorial/errors.html#defining-清理行动
Issue是处理异常的方式。正如在第一个答案中一样,这是一个指示,无论是否存在按钮,您的最终块都将被执行。假设您正在检查页面上的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
。