【问题标题】:Python selenium optional click linkPython selenium 可选点击链接
【发布时间】:2020-12-28 06:26:24
【问题描述】:

我有一个 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()

【问题讨论】:

  • 你检查的网址是什么?

标签: python selenium-chromedriver


【解决方案1】:

首先仔细分析脚本抛出的错误。 在您的示例中,在“finally”之后的第一行中,您尝试查找 ID 为“id_bid”的元素,但是始终调用此代码,如果没有此对象,则会出现错误。 您只需将所有可能失败的操作(例如所有 find_element_by...)移动到 try 子句。 更多关于 try, except, finally: https://docs.python.org/3/tutorial/errors.html#defining-clean-up-actions

【讨论】:

    【解决方案2】:

    问题是您处理异常的方式。与第一个答案一样,无论是否存在任何一个按钮,都表明您的最终块将始终被执行。假设您正在检查页面上的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多