【问题标题】:Setting a default for nosuchelementexception for multiple variables in python为python中的多个变量设置nosuchelementexception的默认值
【发布时间】:2022-06-30 15:54:10
【问题描述】:

所以我要废弃一个表的多行,其中许多行可用于不同的页面或不可用。我想要做的是检测哪个字段不可用并将其提供给变量并设置默认变量,即 None 。 例如,

try:
        field1 = driver.find_element(By.XPATH, value="somexpath")
        field2 = driver.find_element(By.XPATH, value="somexpath")
        field3 = driver.find_element(By.XPATH, value="somexpath")
        field4 = driver.find_element(By.XPATH, value="somexpath")
        field5 = driver.find_element(By.XPATH, value="somexpath")

        dict_ = {"field1":field1, "field2": field2.....}

except NoSuchElementException:
       # some code to detect which element not found and supply a default value None to it
       defaultVaule = None

请帮忙。

【问题讨论】:

    标签: python selenium web-scraping error-handling defaultdict


    【解决方案1】:

    你可以注入if else None语句如下:

    field1 = driver.find_element(By.XPATH, value="somexpath")
    field1=field1.text if field1 else None
    

    【讨论】:

      【解决方案2】:

      您可能想要颠倒顺序 - 使用默认值进行初始化,如果检索成功按元素进行填充。

      dict_ = {"field1":None, "field2": None.....}
      
      try:
              dict_["field1"] = driver.find_element(By.XPATH, value="somexpath")
      try:
              dict_["field2"] = driver.find_element(By.XPATH, value="somexpath")
      

      【讨论】:

        【解决方案3】:

        在我提出问题的同一天,我想出了一个更好的方法来通过单独的函数处理异常。只是我忘记更新了。

        第一次导入

        from selenium.common.exceptions import NoSuchElementException

        然后调用这个函数

        def box_items():
            try:
                ele = driver.find_element(By.XPATH, value=//*[@id='some_id']/div/a).text
                except NoSuchElementException:
                    ele = "None"
                return ele
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-12
          • 2015-01-04
          • 2018-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-02
          • 2017-01-16
          相关资源
          最近更新 更多