如何实现一个函数读取1-9按钮?

如何实现一个根据我们Json存的数字,自动选取对应按钮点击,并且点击对应算法?

首先我们肯定不能给每个元素都写一个函数吧,毕竟挺多,而且如果这样写了,那加减乘除都要分开测试,代码太冗余,此时我们发现数字按钮的定位ID都很类似,如下

于是我们可以写成格式化样式simple{},然后根据驱动数据传入的值,写到里面,但这样就不能用函数了,只能用字符串方式,写在init中,所以代码如下:

 1 class BasePage():
2 """
3 基类 用作初始化 封装常用操作
4 """
5
6 def __init__(self):
7 """
8 初始化driver
9 """
10 self.driver = webdriver.Firefox()
11 self.calurl = r'http://cal.apple886.com/'
12 self.digit_btn = (By.ID, 'simple{}')
13 self.open_page()

basepage.py

 1 class CalElement(BasePage):
2 """
3 封装各种元素对象:清屏、加、减、乘、除、等于
4 """
5
6 def get_result(self):
7 """计算 结果"""
8 res = self.driver.find_element(By.ID,'resultIpt')
9 print(res.get_attribute('value'))
10
11 def find_digit_btn(self, num):
12 """定位数字按钮"""
13 self.driver.find_element(self.digit_btn[0], self.digit_btn[1].format(num))

这样就解决问题了

----------------------------------------------------------------
完整源码见:https://github.com/T-Better/SoftTest

QA|如何实现一个函数读取1-9按钮?|网页计算器自动化测试实战的更多相关文章

  1. 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组 -- 基于node的一个函数

    var fs = require('fs'); // 模板文件夹路径 var templateDirectory = '../src'; //相对于当前文件的相对路径 //var templateDi ...

  2. 关于C中scanf()函数读取字符串的问题

    #include <stdio.h> int main(void) { ]; scanf("%s", s_name); printf("Hello, %s!\ ...

  3. H5 拖拽,一个函数搞定,直接指定对象设置可拖拽

    页面上,弹个小窗体,想让它可以拖拽,又不想 加载一堆js,就简单的能让他可以拖动? 嗯,下面有这样一个函数,调用下就好了! 1. 先来说说 H5的 拖拽 在 HTML5 中,拖放是标准的一部分,任何元 ...

  4. python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)

    函数的执行时,*打散.函数的定义时,*聚合. from functools import wraps def wrapper(f): # f = func1 @wraps(f) def inner(* ...

  5. scanf函数读取缓冲区数据的问题

    标准I\O的缓冲类型 标准I\O根据不同的应用需求,提供了全缓冲.行缓冲.无缓冲三种缓冲方式. 全缓冲:只有当划定的缓冲区被填满或者数据读取至末尾时,才开始执行I\O操作(执行系统提供的read\wr ...

  6. ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

  7. 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)

    解题: 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码[123和12345]那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出 ...

  8. Java-集合(没做出来)第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn reverseL

    没做出来 第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列. 例如: List list = new ArrayList(); list.a ...

  9. asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现

    asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现 用这个可以做模板首页进行输出,也可以自已自定义进行扩展 //得到读取到的文本到string中 string resultTe ...

  10. 面试题-->写一个函数,返回一个数组中所有元素被第一个元素除的结果

    package com.rui.test; import java.util.Random; /** * @author poseidon * @version 1.0 * @date:2015年10 ...

随机推荐

  1. 如何进行测试分析与设计-HTSM启发式测试策略模型 | 京东云技术团队

    测试,没有分析与设计就失去了灵魂: 测试人员在编写用例之前,该如何进行测试分析与设计呢?上次在<测试的底层逻辑>中讲到了[输入输出测试模型],还讲到了[2W+1H测试分析法],但2W1H分 ...

  2. vue3+vite2+element-plus+ts搭建一个项目

    花了几天用 vue3+ vite2+ element-plus+ ts 搭了个 极简版骨架型数据管理系统,使用静态数据模拟动态路由,路由拦截,登录页面鉴权等,使用了iconify字体图标,整合了ces ...

  3. 详解JS的Object.create()

    Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. 语法 Object.create(proto[, propertiesObject]) Obj ...

  4. 让优惠再续一年!SHPC 老客专享

    最近云筏君经常收到自家小伙伴发来的关于产品活动的关心慰问,掐指一算,哦,原来是一年一度大家喜闻乐见的剁手节(学名"双十一")马上要来了! 大家都知道,云筏家的产品向来主打高性价比, ...

  5. python 爬虫某东网商品信息 | 没想到销量最高的是

    哈喽大家好,我是咸鱼 好久没更新 python 爬虫相关的文章了,今天我们使用 selenium 模块来简单写个爬虫程序--爬取某东网商品信息 网址链接:https://www.jd.com/ 完整源 ...

  6. 前端vue uni-app列表组件 list组件,简单好用

    快速实现uni-app列表组件 list组件,简单好用; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12675 效果图如下: ...

  7. Serverless试飞员的夙愿 | 带您扶摇直上,酣畅淋漓的云上作战

    ​上期博文带您体验了外挂云函数Demo包,感受通过云函数使用云数据库快速突破"音障",进入"长机"云函数+"僚机"云数据库的Serverle ...

  8. Unity UGUI的CanvasScaler(画布缩放器)组件的介绍及使用

    Unity UGUI的CanvasScaler(画布缩放器)组件的介绍及使用 1. 什么是CanvasScaler组件? CanvasScaler是Unity中UGUI系统中的一个组件,用于控制画布的 ...

  9. Lite-Mono(CVPR2023)论文解读

    Lite-Mono: A Lightweight CNN and Transformer Architecture for Self-Supervised Monocular Depth Estima ...

  10. 2021-09-27 Core初步实战

    中间件Progarm的定义添加Logging public static IHostBuilder CreateHostBuilder(string[] args) => Host.Create ...