qq_37934574
2019-08-29 16:24
采纳率: 20%
浏览 4.7k

python 求大神指教,如果判断元素是否存在

if d.find_find_element_by_xpath('xxxx'):

if语句可以这样写吗?表达该元素是否存在

如果不行的话,如何写表达元素是否存在

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 小羽Jary 2019-08-29 16:26

    如果d.find_find_element_by_xpath('xxxx')找不到元素的返回值是None就可以这样写

    打赏 评论
  • zhengtuqi 2019-08-29 18:00

    location=d.find_find_element_by_xpath('xxxx')
    if not location is None:
    do work

    打赏 评论
  • 吃鸡王者 2019-08-30 09:43

    可以,只要是值或返回值是bool型或可以转化为有效 的bool型都可以作为if 判断语句,d.find_find_element_by_xpath('xxxx') 他返回的是None或x_path , 他们转化为bool类型分别对应False和True,所以可以作为if 的判断语句。

    打赏 评论
  • searchspace 2019-08-31 13:34

    大多数时候,你这样写是没有问题的,只要函数find_find_element_by_xpath('xxxx')的返回值是bool类型或者可以转化为bool的0,1等。
    具体是需要查看你这个函数的定义的返回值来写。总结起来:
    1)返回值是bool, if (returnVal):
    2)返回值是对象,if(not returnVal):
    3)返回值是数值, if(0!=returnVal):
    4)返回值是字符串, if(''!=returnVal):
    5)返回值是list的元素, if(returnVal not in list):

    打赏 评论
  • little-one 2019-12-27 16:38

    不行的,元素存在这个方法返回的元素的位置,元素不存在就会报错

    我现在没有找到特别好的办法,用try catch时间太长了;

    如果你找到了,麻烦告诉我一下

    打赏 评论
  • CesareCheung 2020-01-04 16:29

    你可以 试下这样,判断元素是否存在,这个是对应的方法封装

    from selenium.common.exceptions import NoSuchElementException
    from selenium.webdriver.support.wait import WebDriverWait
    
        def is_element(self, locator, time_out=0) -> bool:
            """判断页面是否存在该元素
    
            元素存在返回True,否则返回False
    
            :param locator: 定位器 (by=By.ID, value=None)
            :param time_out: 超时,默认 0
            :return:
            """
    
            try:
                WebDriverWait(self.driver, time_out).until(
                    EC.presence_of_element_located(locator)
                )
            except NoSuchElementException:
                print("元素不存在")
                return False
            else:
               print("元素存在")
            return True
    
    
    打赏 评论
  • qqLML_ZR 2020-11-21 17:24

    可以用find_elements_by_来判断,为elements时,如name=driver.find_elements_by_id('save'),没找到时name为空,不会报错中断

    1 打赏 评论

相关推荐 更多相似问题