51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 33681|回复: 11
打印 上一主题 下一主题

请问下selenium+python如何判断一个元素是否存在?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-11-18 19:15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问下selenium+python如何判断一个元素是否存在啊?
我想判断A元素是否存在,如果存在执行1操作,如果不存在执行2操作。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2015-3-2 18:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    推荐
    发表于 2015-2-7 20:36:28 | 只看该作者
    try:
        driver.find_element_by_xpath("xxx x").is_displayed()
    except:
        print "未找到元素"
    else:
        print "元素存在"

    希望能帮助你!
    回复 支持 1 反对 0

    使用道具 举报

    该用户从未签到

    2#
    发表于 2014-11-19 00:14:29 | 只看该作者
    try:
        driver.find_element.xxxxx
        a=True
    except:
        a=false
    if a==True:
       print "元素存在"
    elif a==False:
       print "元素不存在"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2014-11-19 09:38:41 | 只看该作者
    你定位到A元素,然后将A元素赋值给 B

    然后你
    if B:
        (继续你操作的步骤)
    例子:
    1. from selenium import webdriver
    2. import time
    3. a = webdriver.Chrome()

    4. a.get("http://baidu.com")

    5. b = a.find_element_by_id("kw")

    6. if not b:
    7.     b.send_keys("a")
    8.     time.sleep(2)
    9.     a.find_element_by_id("su").click()
    10. else:
    11.     a.close()
    复制代码
    或作试用assert,也可以。

    如果你是找的是属性,那可以使用
    get_attribute
    例子:
    先定位好元素赋值给 i
    然后再判断 i 里面是否有这个属性(type)
    if i.get_attribute('type') == 'checkbox'
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2015-2-3 09:37:48 | 只看该作者
    selenium中有个异常,NoSuchElementException,不记得怎么拼写了,通过from selenium.common.exceptions import NoSuchElementException,如果定义一个检查元素的方法的话,加上返回值就可以了,可以加入所有元素定位的方法,封装成一个元素检查函数,例如下面,
    def isElement(self,identifyBy,locatorString):
       flag = False
       try:
         if identifyBy == "id":
            driver.find_element_by_id("kw")
            flag = True
         elif identifyBy == "xpath":
             ......
       except NoSuchElementException,e
            pring "未找到元素"
            flag = False
       return flag
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-1 08:26
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]测试旅长

    6#
    发表于 2015-3-31 16:19:16 | 只看该作者
    顶一下哦。。。。给力
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-4-5 22:07
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2015-4-5 22:12:50 | 只看该作者
    不知道能不能写个自动发布
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2015-6-1 10:36:49 | 只看该作者
    ruoyi1314520 发表于 2014-11-19 00:14
    try:
        driver.find_element.xxxxx
        a=True

    请问为什么出错显示True未定义呢,要怎么处理
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2016-3-2 14:55:57 | 只看该作者
    用java该怎么实现啊???楼主
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-15 08:56
  • 签到天数: 1179 天

    连续签到: 1 天

    [LV.10]测试总司令

    10#
    发表于 2016-4-13 09:12:54 | 只看该作者
    1.         public boolean isDisplay(Locator locator)
    2.         {
    3.                 boolean flag = false;
    4.                 try
    5.                 {
    6.                         driver.findElement(locator);//locator是定位元素的方式,方式可以自己选择
    7.                         flag = true;
    8.                 } catch(NoSuchElementException e)
    9.                 {
    10.                         System.out.println("未找到元素!"+ e.getMessage());
    11.                 }
    12.                 return flag;
    13.         }
    14.        
    15.         if(isDisplay)
    16.         {
    17.                 //执行 1
    18.         }else
    19.         {
    20.                 //执行2
    21.         }
    复制代码
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-3 04:43 , Processed in 0.071439 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表