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

if d.find_find_element_by_xpath('xxxx'):

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

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

6个回答

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

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

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

qq_39412061
吃鸡王者 报的什么错?
5 个月之前 回复
qq_37934574
qq_37934574 但是,我if语句这样写,如果没有这个元素,会直接报错
5 个月之前 回复

大多数时候,你这样写是没有问题的,只要函数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):

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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问