如何实现一个函数读取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. Python分割多空格字符方法

    问题: 现有一个字符串 "1 + 5" ,想要获取 1,+,5 这三个元素 做法: str.split(' ') ['1', '', '', '', '', '', '+', '' ...

  2. web自动化10-窗口截图、验证码处理

    窗口截图 1.是什么 说明:把当前操作的页面,截图保存到指定位置 2.代码中怎么使用? 说明:在Selenium中,提供了截图方法,我们只需要调用即可 方法: driver.get_screensho ...

  3. 手摸手带你 在Windows系统中安装Istio

    Istio简介 通过负载均衡.服务间的身份验证.监控等方法,Istio 可以轻松地创建一个已经部署了服务的网络,而服务的代码只需很少更改甚至无需更改. 通过在整个环境中部署一个特殊的 sidecar ...

  4. WPF中小的技能点 1

    图片圆角的处理方式       采用boder里background背景设置图片并设置对应的圆角 <Border CornerRadius="20">      < ...

  5. Pytorch-PyG图神经网络依赖环境安装(Anaconda)

    1.默认用户在Anaconda的虚拟环境中已安装Pytorch 2.打开anaconda prompt命令窗, activate "你的虚拟环境名称" 3.在激活后的虚拟环境下输入 ...

  6. celery笔记四之在Django中使用celery

    本文首发于公众号:Hunter后端 原文链接:celery笔记四之在Django中使用celery 这一篇笔记介绍一下如何在 Django 系统中使用 celery. 如果是想纯粹使用 celery, ...

  7. 从2PC和容错共识算法讨论zookeeper中的Create请求

    最近在读<数据密集型应用系统设计>,其中谈到了zookeeper对容错共识算法的应用.这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以 ...

  8. 使用 JCommander 解析命令行参数

    前言 如果你想构建一个支持命令行参数的程序,那么 jcommander 非常适合你,jcommander 是一个只有几十 kb 的 Java 命令行参数解析工具,可以通过注解的方式快速实现命令行参数解 ...

  9. GGTalk 开源即时通讯系统源码剖析之:虚拟数据库

    继上篇<GGTalk 开源即时通讯系统源码剖析之:服务端全局缓存>详细介绍了 GGTalk 对需要频繁查询数据库的数据做了服务端全局缓存处理,以降低数据库的读取压力以及加快客户端请求的响应 ...

  10. PHP递归和循环的速度测试

    本文于 2017-12-05 重新整理. 写了一个可以对 $_GET, $_POST 等输入进行过滤的函数,递归实现如下: function array_map_recursive($filters, ...