• 0
  • 0
分享
  • selenium定位之find_element方法——软件测试圈
  • 曼倩诙谐 2024-06-18 16:36:12 字数 1539 阅读 1885 收藏 0

  自学习selenium以来,提到元素定位首先想得的是find_element_by_xxx。

  但是今天学习时发现了还有一个方法find_element,没有后面的by。

  于是试图点进去源码看看,未果(不知道是不是vscode不支持的原因)。

  于是在网上搜索相关内容,貌似这种方法确实可行,贴出疑似源码如下:

  def find_element(self, by=By.ID, value=None):
          """
          根据策略和定位器找到给定的元素。
   
          :使用方法:
              element = driver.find_element(By.ID, 'foo')
   
          :rtype: WebElement
          """
          if self.w3c:
              if by == By.ID:
                  by = By.CSS_SELECTOR
                  value = '[id="%s"]' % value
              elif by == By.TAG_NAME:
                  by = By.CSS_SELECTOR
              elif by == By.CLASS_NAME:
                  by = By.CSS_SELECTOR
                  value = ".%s" % value
              elif by == By.NAME:
                  by = By.CSS_SELECTOR
                  value = '[name="%s"]' % value
          return self.execute(Command.FIND_ELEMENT, {
              'using': by,
              'value': value})['value']

  尝试使用这种方法进行页面封装,传入一个元组,第一个元素为定位key,第二个为定位value。

  class Page:
   
      url = None
      driver = None
   
      @classmethod
      def cls_element(cls, loc: tuple):
          return cls.driver.find_element(*loc)
   
      def element(self, loc: tuple):
          """
          定位元素的方法
          :param loc:
          :return:
          """
          return self.driver.find_element(*loc)
   
      def elements(self, loc: tuple):
          """
          定位一组元素或多个元素
          :param loc:
          :return:
          """
          return self.driver.find_elements(*loc)


作者:hello_timy    

来源:http://www.51testing.com/html/29/n-7796429.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、移动端的认识:1、什么是移动端狭义:智能手机、品牌电脑;广义:所有可移动的设备(例如:点菜设备、移动的机器人、pos机、扫码枪)2、移动端操作系统IOSAndroidWindows PhoneSymbian(塞班)Windows MobileBlackberry(黑莓)3、测试的分类传统手机测试:测试手机本身,如抗压、抗摔、抗疲劳、抗低温高温等,也包括手机本身的功能、性能等测试。手机应用软件测试:是基于手机操作系统之上开发出来的软件,做这样测试,就叫手机应用软件测试。4、移动应用的认识狭义:原生APP(纯粹的使用app开发语言开发的软件)广义:混合的App(融合Web应用、小程序)5、移动...
            14 13 2945
            分享
          • 接着上篇《深聊MySQL之:让orderby、Groupby查询速度飞起来(上)》我们今天继续讨论如何让orderby,groupby 的查询速度起飞 3、order by 优化我们了解了order by的原理,那么我们就来看看,优化order by 有什么技巧。3.1 添加合适索引3.1.1 排序字段添加索引①首先我们看下对 d 字段(没有索引)进行排序的执行计划:explain select d,id from t1 order by d;执行结果如下:发现使用的是 filesort(关注 Extra 字段)。...
            1 0 7456
            分享
          • 在软件研发和测试过程中,当测试人员、开发人员以及业务人员沟通测试案例的功能点以及覆盖率时,复杂的功能需求和晦涩难懂的测试案例脚本脱节,让大家很难对测试功能点达到一致,也很难统计测试覆盖率。如果有一种通用语言来描述测试用例,让开发、测试和业务人员都能够很好地理解测试需求,步骤和目标,便可以最大程度避免由于理解偏差带来的不一致性问题,而BDD(全称Behavior Driven Development)技术就是解决这一问题的钥匙。BDD即行为驱动开发,是一种敏捷软件开发的技术,是TDD(全称Test Driven Development)即测试驱动开发的延伸,它用简单易懂的“通用语言”——Gher...
            0 0 3064
            分享
          •   一个新人进入一个新的体系,有必要建立一个框架结构的思维方式,我就来尝试给你搭搭框架,并且尽量使用比较通俗的表达方式。  质量管理工作分为哪些部分?  首先我用一张图简单给你说说质量到底是一份怎样的工作,主要分哪几块内容:可能很多业内人士看到要说我的区分方式太简单粗暴了,但是过于细化对于初学者来说可能根本就看不懂,另外我没有把领导职能加入进去  既然做质量你必须搞清楚你现在是做实物还是做体系,一个简单的区分方法(注意:不是很科学,但是对于新人来说比较容易理解)就是,实物的主要工作面向产品和过程,体系的主要工作面向流程和审核。  一个新人加入了质量部的大团队以后,如果有得选那么我的建议是先走实...
            0 0 398
            分享
          •   当谈到Web端自动化测试时,首先想到的是什么?毋庸置疑是Selenium。毫不夸张地说,Selenium引领着界面测试自动化领域。使用过Selenium的人都了解,当一个元素嵌套在多层Frame中时,需从主页面一层一层切到元素所在的Frame,才能查找到该元素。而一般的录制工具在采集元素的定位信息时,只能采集到它的父级Frame,甚至采集不到Frame信息。如果让测试人员手动从源码中寻找所有父级Frame信息,可能他以后再也不想做界面自动化测试了。  假设元素只有自身的定位信息,如何准确找到该元素?笔者反复思考、查找资料,使用递归遍历算法解决了此问题。下面带您一步一步解析。  Frame标...
            13 13 2280
            分享
      • 51testing软件测试圈微信