51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1091|回复: 0
打印 上一主题 下一主题

浅谈selenium定位之find_element方法

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-5-30 10:51:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    自学习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)



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 12:11 , Processed in 0.063860 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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