Python硒可选单击链接

时间:2020-09-09 19:11:39

标签: python selenium-chromedriver

我有一个硒元素,当访问该页面时,我想单击链接以下载文件, 并非所有页面都有此链接。

所以我的问题是,如果页面有链接,我将能够单击该链接,如果没有链接,则继续执行其他一些任务。

我的问题是在没有链接的页面上,它导致程序停止并崩溃。 我正在寻找一种可能的方法来单击该链接,如果该链接不存在,请继续进行其他操作。


                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()

2 个答案:

答案 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