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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   春天到了又是金三银四的黄金招聘季了,很多同学都开始想跳槽了,大家非常想知道2023年软件测试行情有没有变好呢?如果想跳槽合不合适?笔者作为这个行业的老师傅,分享一下自己的看法,希望对大家有所帮助。  首先今年行情肯定比去年好太多,但是大家不要过于乐观啊,该卷还是很卷的,只是比去年的工作机会要多一些了。  普通功能测试人员不建议跳槽  普通的功能测试人员不是很建议跳槽,因为跳槽也涨不了多少钱。功能测试只会点点点,或者只会一点点自动化,或者在外包一个很大的项目组中间做一个技术含量并不高的测试,说实话不太好跳槽!  现在公司对软件测试的需求是多面体性的  啥意思呢?就是你一个测试要懂运维,要懂开...
            0 0 989
            分享
          • 我们都知道,随着年龄的增长 测试的行业岗位方向大致分为测试专家、测试开发工程师、测试管理,还有一个方向就是QA,软件质量保证那么,如何能够转行QA呢,一般按照我的经验来看,80%的概率是在公司内部转岗,这样比较容易,没有相关经验的机会很渺茫说到这里,CMMI和QA 有什么关系,为什么写做QA要了解CMMI我们来看一个截图,如下显示QA岗位技能要求一般都要求熟悉CMMI,更有的要求参与过cmmi培训等所以,CMMI属于最基础的内容,也是想成为QA的第一步1、什么是CMMI“CMMI全称是Capability Maturity Model Integration,是能力成熟度集成模型。CMMI 5...
            0 0 2616
            分享
          •   我叫缺陷,从被创建至关闭,到最后做缺陷分析,这是我的完整生命周期。我的整个生命周期贯穿着整个项目的项目周期,因此,掌握我的生命周期,不止是测试人员必修的课程,也是测试人员的灵魂。  缺陷的定义  对于软件的缺陷来说,一般人都把我说是Bug,但正确的来说,应该是Defect,这两者的区别是:  Bug是编程错误的结果;  Defact 是与需求的偏离。  Defect不一定表示代码中存在Bug,它可能是尚未实现但在软件要求中定义的功能。实际上,无论是测试人员还是开发人员,还是习惯把我叫为Bug。  缺陷的属性组成  我一般由标识(ID)、标题、类型、优先等级、严重程度、状态、指派人组成,这些...
            0 0 1275
            分享
          •   估计大家都遇到过吧,登录账户的时候好死不死的出现了验证码不知道怎么办了,啊哈哈哈哈,我是不止遇到了一次,避免踩坑,在这里就把相关资料分享给大家嘿嘿嘿~  创建线程:  新建获取验证码的采集器:  新建一个监听器:  新建一个用户自定义变量,用于存解析出来的验证码值:  新建一个存验证码值的变量regCode,为了便于判断是否已解析出验证码,设定一个默认值-1。  给获取验证码的采集器加一个后置处理器BeanShell PostProcessor,用于解析验证码的值,并将其存入上一步的用户变量中。  在采集器上新建一个后置处理器Debug PostProcessor,便于调试:  验证之前的...
            0 0 1698
            分享
          •   1、${__counter(,)} 计数器-加1的功能  疑问:假如加2,使用计数器 -计数器超过最大值后重新开始计数  重点:最大值, 如果运行结果超过最大值时,又会从起始值开始循环每个  用户独立计数器:多线程时,每个用户都是从起始值开始计数,跟线程号有关(${__threadNum} 获取线程号函数)  计数器注意事项如图显示:  2、时间相关的几个函数  ${__time(,)} 默认获取当前时间戳函数,但可以设置格式,比如yyyy-MM-dd 年月日的格式 HHmmss 时分秒 S毫秒   ${__dateTimeConvert(...
            0 0 761
            分享
      • 51testing软件测试圈微信