首页 > 其他分享 >selenium定位之find_element方法

selenium定位之find_element方法

时间:2022-10-28 10:22:52浏览次数:51  
标签:loc return self selenium value element find

自学习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)

  

标签:loc,return,self,selenium,value,element,find
From: https://www.cnblogs.com/hellotimy/p/16834939.html

相关文章

  • Unable to find CDI BeanManager
    报错内容:UnabletofindCDIBeanManagerjavax.faces.FacesException:UnabletofindCDIBeanManager的解决方法解决方法:修改WEB-INF/web.xml<?xmlversion="1.0"enc......
  • vue-element-admin框架学习笔记
    0背景vue-element-admin是一个已高度完成的系统原型,它基于vue框架和elementUI组件库。它使用最新的前端技术栈,内置i18n国际化解决方案、动态路由、权限验证。它可以帮助......
  • ElementUI 季度选择器 QuarterPicker
    一、在项目 components 路径下创建 quarter-picker 文件夹1<!--2*@Descripttion:季度选择器3*@version:1.04*@Author:https://www.lervor.......
  • element-ui表单自定义校验
    1.问题描述项目开发过程中,遇到表单校验,这次的校验规则比较严,element-ui表单自带的校验完全解决不了问题。2.解决方法使用element-ui 表单校验中的......
  • elementui手动触发大图预览
    实现效果不需要点击el-image组件,而且通过其他方式自由触发大图预览效果写法原本想通过获取el-imagedom元素,dom.click()来进行触发。发现不生效。查了一下,如下方法可以......
  • element表格el-table组件实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题
    element表格el-table组件实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题当页面数据过多,前端渲染大量的DOM时,会造成页面卡死问题,使用分页或则懒加载这些方案也无法解决,这......
  • web自动化-----------报错 Element * is not clickable at point,Other element would
     出现报错Otherelementwouldreceivetheclick:的原因是;当你selenium中click()点击事件时,所选中的标签被外部div吸收了,因此解决办法就是进入里面进行点击操作。dr......
  • Error: Cannot find module 'gifsicle'问题解决
    运行报错 Error:Cannotfindmodule'gifsicle'解决办法:删除nodu_modules下的image-webpack-loader包npmuninstallimage-webpack-loader重新安装npminstall......
  • Qt QWidget::find注意事项
    QWidget::find的作用是根据窗口id获取QWidget指针,然后根据QWidget进行相应的操作,很方便;不过QWidget::find能否跨进程呢,比如父进程启动子进程,子进程将主窗口的wid传递给父进......
  • vue2 element2 自定义 NavMenu 导航菜单 的样式
    HTML代码<el-menudefault-active="2"class="el-menu-vertical-demo"@open="handleOpen"@close="handleClose"......