当前位置: 首页 > news >正文

webui自动化测试框架(2)——对基本操作进行封装common

接上篇:webui自动化测试框架(1)——框架介绍
在这里插入图片描述

封装driver.py:
driver的初始化,查找元素,点击元素,输入内容,切换iframe,切换Windows等
1.类,构造函数init里面适配浏览器,浏览器的窗口最大化,设置隐式等待,默认20秒。
2.定位元素进行封装find_element方法
参数ele_info 数据类型是字典的类型{‘type’:‘xpath’,‘value’:‘xxx’},type表示定位类型,value表示元素定
位的值
返回值是目标元素
3.get_by方法 主要是获取最终的定位类型和元素定位的值,即locator=(type,value)
4.click方法 采用之前封装的显示等待的条件
5.get 打开浏览器链接
6.quit 退出浏览器
7.page_source:获取页面源码
8.page_contains:测试用例层做断言用的,这里面采用显示等待的方式,lambda匿名函数如果包含返回True,否则返回False。

封装driver.py

浏览器

webUI自动化大多数公司用的是Chrome浏览器,但也不排除其他浏览器的使用,还有一种情况是在要求测试兼容性的时候,会用到不同的浏览器,因此需要对不同的浏览器进行适配(前提:不同浏览器都安装了对应的webdriver)
这里封装了Chrome、Firefox、IE、edge浏览器,可以根据实际情况自行往里添加相关浏览器
代码如下:

class InitDriver:def __init__(self,browser:str):self.logger = GetLogger().get_logger()# 适配不同浏览器if browser.lower() == 'chrome':self.driver = webdriver.Chrome()elif browser.lower() == 'firefox':self.driver = webdriver.Firefox()elif browser.lower() == 'ie':self.driver = webdriver.Ie()elif browser.lower() == 'edge':self.driver = webdriver.Edge()else:self.logger.error('不支持的浏览器类型:{}'.format(browser))raise Exception('不支持的浏览器类型:{}'.format(browser))# 浏览器最大化self.driver.maximize_window()# 隐式等待-一般写10即可self.driver.implicitly_wait(20)

元素信息

传入元素可作为目标元素,供后面的鼠标操作和定位时调用

def find_element(self,ele_info):try:locator = self.get_by(ele_info)  # 元组el = self.driver.find_element(*locator)self.logger.info(f'查找{ele_info}元素成功')return elexcept Exception as e:self.logger.error(f'查找{ele_info}元素失败,报错信息为{e}')raise Exception(f'查找{ele_info}元素失败,报错信息为{e}')

在这里插入图片描述

网页地址

根据需求不同,每次登陆的网址也不同,这里对打开的目标网址也写了一个方法,后面可以直接调用

def get(self,url):# 打开目标的网址self.driver.get(url)self.logger.info(f'登录{url}网站')

点击操作

自动化测试过程中无时无刻不涉及鼠标和键盘操作,除了元素定位以外,其他都是由键盘和鼠标操作来完成的。比如一个简单的搜索动作,首先通过键盘向搜索框键入内容(send_keys),然后通过鼠标点击搜索按钮(click)完成搜索
在selenium中,所有的键盘鼠标动作都来自于一个类ActionChains,先来导入它

from selenium.webdriver.common.action_chains import ActionChains

定位到元素,然后进行点击

def click(self,ele_info):try:wait=WebDriverWait(self.driver,20)locator = self.get_by(ele_info)wait.until(element_click_is_success(locator))self.logger.info(f'元素{ele_info}点击成功')except Exception as e:self.logger.error(f'元素{ele_info}点击失败,报错信息为{e}')raise Exception(f'元素{ele_info}点击失败,报错信息为{e}')

输入操作

def send_keys(self,ele_info,text):try:element = self.find_element(ele_info)# 清空element.clear()# 输入element.send_keys(text)# 打日志信息self.logger.info(f'元素{ele_info}输入文本内容{text}成功')except Exception as e:self.logger.error(f'{ele_info}输入失败,报错信息为{e}')raise Exception(f'{ele_info}输入失败,报错信息为{e}')

页面源码(用于断言)

def page_source(self):try:self.logger.info('获取页面源码')return self.driver.page_sourceexcept Exception as e:self.logger.error(f'获取页面源码失败,报错信息为{e}')raise Exception(f'获取页面源码失败,报错信息为{e}')

断言:提示信息是否在页面源码中

def page_contains(self,text):try:wait = WebDriverWait(self.driver,20)# d表示的就是self.driver对象flag =wait.until(lambda d: text in d.page_source)self.logger.info(f'页面源码中包含{text}文本')except Exception as e:flag = Falseself.logger.warn(f'页面源码中不包含{text},报错信息不包含{e}')return flag

退出浏览器

每个测试场景类测试完成后都需要推出浏览器,也就意味着每个case都要写一次退出,所以在这里也把推出写成了一个方法,后面通过调用就可以了

def quit(self):try:self.driver.quit()self.logger.info('driver退出成功')except Exception as e:self.logger.error(f'driver退出失败,报错信息为{e}')

定位方式

这里只封装了几种基本元素定位方式:
id、name、classname、tagname、css、xpath、linktext、plinktext
复数定位可以自行加上

def get_by(self,ele_info):'''主要是获取定位策略locator的值ele_info数据类型是自己设计的,字典ele_info = {'type':name/xpath/id/css/classname/tagname/linktext/plinktext,'value':值}type = ele_info.get('type')  # 定位策略value = ele_info.get('value')  # 值driver.find_element(type,value).send_keys('123456789'):return:  具体的locator'''type = ele_info.get('type')  # 定位策略value = ele_info.get('value')  # 值if type == 'id':locator = (By.ID, value)elif type == 'name':locator = (By.NAME, value)elif type == 'classname':locator = (By.CLASS_NAME, value)elif type == 'tagname':locator = (By.TAG_NAME, value)elif type == 'css':locator = (By.CSS_SELECTOR, value)elif type == 'xpath':locator = (By.XPATH, value)elif type == 'linktext':locator = (By.LINK_TEXT, value)elif type == 'plinktext':locator = (By.PARTIAL_LINK_TEXT, value)else:# raise 抛出异常 代码不会继续往下运行self.logger.error(('不支持的浏览器类型:{}'.format(type)))raise Exception('不支持的浏览器类型:{}'.format(type))self.logger.info(f'元素的定位策略是{locator}')return locator

鼠标悬停

什么地方会用到鼠标悬停的动作呢?
比如选择省市区这类的下拉框或者选择框的的时候就会涉及到鼠标悬停的动作了。

def move_to_element(self,ele_info):'''鼠标悬浮:return:'''try:# 先定位到目标元素el=self.find_element(ele_info)# 鼠标悬浮在这个元素上面action=ActionChains(self.driver)action.move_to_element(el).perform()self.logger.info(f'鼠标悬浮元素{ele_info}成功')except Exception as e:self.logger.error(f'鼠标悬浮元素{ele_info}失败,报错信息为{e}')# 抛出异常raise Exception(f'鼠标悬浮元素{ele_info}失败,报错信息为{e}')

截图

这里主要是截取测试用例失败时的截图,也就是测试用例在哪里失败的就会在哪里截图

def get_screenshot_as_png(self):try:png = self.driver.get_screenshot_as_png()self.logger.info('截图成功')return pngexcept Exception as e:self.logger.error(f'截图失败,报错信息为{e}')# 抛出异常raise Exception(f'截图失败,报错信息为{e}')# 截图并保存成文件的形式def get_screenshot_as_file(self,filepath):try:self.driver.get_screenshot_as_file(filepath)self.logger.info('截图并保存成功')except Exception as e:self.logger.error(f'截图并保存失败,报错信息为{e}')# 抛出异常raise Exception(f'截图失败,报错信息为{e}')

切换窗口

def switch_window(self):# 点击目标商品需要等会才能显示多窗口时的解决办法: 1.死等2.显示等待# time.sleep(2)try:handles = self.driver.window_handleswait = WebDriverWait(self.driver,10)wait.until(window_be_switch_success(handles[-1]))self.logger.info('切换窗口成功')except Exception as e:self.logger.error(f'切换窗口失败,报错信息为{e}')# 抛出异常raise Exception(f'切换窗口失败,报错信息为{e}')

获取文本内容

获取文本内容主要适用于断言使用,判断获取的文本内容是否在页面源码中存在

def get_text(self,ele_info):el = self.find_element(ele_info)try:text = el.textself.logger.info(f'获取元素文本内容成功,内容是{text},类型是{type(text)}')return textexcept Exception as e:self.logger.error(f'获取元素文本内容失败,报错信息为{e}')# 抛出异常raise Exception(f'获取元素文本内容失败,报错信息为{e}')

显示等待封装无法点击not clickable

class element_click_is_success:def __init__(self,locator):self.locator = locator# until - 函数-只有一个参数-driverdef __call__(self,driver):  # 定义函数的过程:定义参数,返回值,运行代码# 函数就是对象=类名()等价于函数的名字try:# 不定长参数  args元组 *元组   语法升级driver.find_element(*self.locator).click()return Trueexcept Exception:return False# 切换窗口,自定义一个显示等待的方法 切换成功
class window_be_switch_success:def __init__(self,handle):self.handle = handledef __call__(self,driver):try:driver.switch_to.window(self.handle)return Trueexcept Exception:return False

封装file_load.py

和接口自动化的那个文件一样,可以直接copy过来

def read_yaml(filename):'''读取yaml文件pip install pyyaml:return:路径:绝对路径相对路径:相对的是哪个文件??相对的是你运行的那个文件'../data/mtxshop.yml' 相对file_load.py'./data/mtxshop.yml' 相对run.py动态生成绝对路径解决方案:动态生成绝对路径1.获取当前项目的绝对路径2.跟读取的数据进行拼接'''with open(DIR_NAME+filename,'r',encoding='utf-8') as f:# 读取yml文件content =yaml.load(f,Loader=yaml.FullLoader)return contentdef read_excel(filename,sheet_name):'''pip install pandaspip install openpyxlpip install xlrd:param filename: 你要读取的文件的名字:return:'''pd=pandas.read_excel(DIR_NAME+filename,sheet_name=sheet_name,# 如果碰到空的单元格,默认是返回nan,python没有办法解析# 所以让keep_default_na=False就会返回空字符串,keep_default_na=False,engine='openpyxl')# 总行数lines_count = pd.shape[0]  # 获取总的行数(不包含头部)# 总列数col_count = pd.columns.size # 获取总列数# 获取单元格的方法的索引值是从0开始的data=[]# 父循环控制行数for row in range(lines_count):  # 遍历行line = []  # 存放同一行中不同列的数据# 子循环控制列数for col in range(col_count): # 遍历列text=pd.iloc[row,col]  # 行和列组合交叉定位到一个单元格,可以拿到其内容# 判断  如果列数==1的时候  请求参数  text正常读取是字符串 text转换成字典if col == 1:text=json.loads(text)  # 将json格式的字符串转换成字典line.append(text)data.append(line)return dataif __name__ == '__main__':# print(read_yaml('/data/mtxshop.yml')['buynow'])# data = read_excel('/data/buyer.xlsx','立即购买')# print(data)# print(read_yaml('/config/db.yml')['test'])print(read_yaml('/pagefiles/buyer.yml'))

封装logger.py

和接口自动化的那个文件一样,可以直接copy过来

import logging.handlers
from setting import DIR_NAMEclass GetLogger:'''当已经创建了logger对象的时候,那么之后就不在创建了,也就是只创建一次对象'''# 把logger对象的初始值设置为Nonelogger = None# 创建logger,并且返回这个logger@classmethoddef get_logger(cls):if cls.logger is None:########创建日志器,控制他的创建次数cls.logger = logging.getLogger('apiautotest')  # 不是None# 设置总的级别,debug/info/warning/error# 只有比debug级别高的日志才会被显示出来cls.logger.setLevel(logging.DEBUG)# 2获取格式器# 2.1 要给格式器设置要输出的样式fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s"# 2.2创建格式器,并且给他设置样式fm = logging.Formatter(fmt)# 3.创建处理器 按照时间进行切割文件tf = logging.handlers.TimedRotatingFileHandler(filename=DIR_NAME +'/logs/requests.log',  # 原日志文件when='H',  # 间隔多长时间把日志存放到新的文件中interval=1,backupCount=3,  # 除了原日志文件,还有3个备份encoding='utf-8')logging.basicConfig(level=logging.DEBUG,format=fmt) #这是在控制台上打印日志信息# 在处理器中添加格式器tf.setFormatter(fm)# 在日志器中添加处理器cls.logger.addHandler(tf)# return cls.loggerreturn cls.loggerif __name__ == '__main__':logger = GetLogger().get_logger()print(id(logger))logger1 = GetLogger().get_logger()print(id(logger1))logger.debug('调试')  # 相当print小括号中的信息logger.info('信息')logger.warning('警告')name = '123'logger.error('这个变量是{}'.format(name))logger.critical('致命的')

待补充,更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

如何用Python快速爬取小姐姐的美图

最近有一个小伙伴拿一个python代码来问我为什么报错? 我仔细一看:是用来爬取某个网站妹子图的代码,结果发现那个网站已经404了,当然爬不到了。 其实很多初学者都喜欢拿网上的案例作为练习,但是我们的爬虫可能会对一些…...

CentOS8安装activeMQ

Active简介 ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。 它解决了下面的问题: 做到系统解耦,当新的模块接进来时&am…...

leetcode刷题笔记 322.零钱兑换【中等】

1、广度优先搜索 int coinChange(vector<int>& coins, int amount) {if (amount 0)return 0;int n coins.size();vector<int> flags(amount);queue<int> q;q.push(amount);int count 0;while (!q.empty()) {count;int s q.size();for (int i 0; i …...

wordpress新创建文章404问题解决

修改httpd.conf 找到AllowOverride None修改为ALL...

[高维随机矩阵-2]

本系列主要按照《Introduction to random matrices theory and practice》进行&#xff0c;后续不再一一声明。每次使用新资料&#xff0c;都会在第一次使用时声明&#xff0c;后续也不再一一生明。 1. 本书目标读者是绝对的零基础人员。 2.随机矩阵理论random matirx theory…...

EasyExcel + Vue +Springboot 前后端联动,快捷导出Excel文件

预期效果&#xff1a;前后台联动&#xff0c;即点击“导出Excel”按钮后弹出下载框 导出效果&#xff1a; 1. 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version>…...

优质ip代理怎么使用?

目前&#xff0c;大家上网越来越依赖于代理IP&#xff0c;代理IP的应用范畴正在逐步扩展。对于因特网这个巨大的网站空间&#xff0c;大家一样期待着这其中的标准和实际中的一样&#xff0c;因此也期待着自己的个人信息能在互联网上得到最大的利益维护。但是事实上由于互联网是…...

windows下python3.5+安装scrapy与创建项目

scrapy框架的安装与创建项目 scrapy安装&#xff1a; 相信第一次安装scrapy框架都会遇到各种安装不上的问题&#xff01;哈哈&#xff0c;别问我为啥知道&#xff01; 那我分享下我是如何安装scrapy框架的。 首先安装scrapy框架之前需要先安装几个依赖的库 依照顺序分别是 z…...

docker搭建LDAP统一用户认证

1. 安装LDAP docker run -dit \ -p 389:389 \ -v /data/ldap/ldap:/var/lib/ldap \ -v /data/ldap/slapd.d:/etc/ldap/slapd.d \ --name ldap \ --env LDAP_TLSfalse \ --env LDAP_ORGANISATION"pibigstar" \ --env LDAP_DOMAIN"pibigstar.com" \ --env LD…...

python数据分析——如何用python连接远程数据库

本文将以SQLite、MySQL&#xff0c;PostgreSQL为例讲解python怎样连接远程数据库并执行相关数据库操作。 SQLite SQLite可能是与Python连接的最方便的数据库&#xff0c;因为我们不需要安装任何外部Python SQL模块即可使用。默认情况下&#xff0c;Python会自带一个名为sqlite…...

在 IntelliJ IDEA 中为自己设计的类库生成 JavaDoc

因为某个项目需要&#xff0c;为团队其他兄弟姐妹开发了一个 XML 分析处理器&#xff0c;并将其设计为一个类库&#xff0c;提供相应的 API 接口。为了方便大家的使用&#xff0c;需要生成对应的 JavaDoc 帮助文档&#xff0c;就像 JavaSE 标准库提供的 JavaDoc 那样。我的开发…...

奔腾(BNTN) 380功放+纽约至尊 套装家庭影院

奔腾(BNTN) 380功放+纽约至尊 套装家庭影院送美诗特TA20无线话筒1套+自拍神器杆! DTS解码数字功放 HDMI、光纤、同轴多组输入输出 USB、蓝牙播放功能...

Windows系统发布Asp.Net core应用到IIS上

如何在windows系统上发布一个Asp.net core应用的网站&#xff1f;踩了不少坑&#xff0c;现在简单总结如下。 亲测有效的系统&#xff1a; windows 7 x64windows 10 x64windows server 2016 x64 具体步骤如下&#xff1a; 1.Net Core SDK安装 .Net Core SDK是一组库和工具…...

攻防世界XCTF-WEB入门全通关

为了更好的体验&#xff0c;请见我的---->个人博客 XCTF的web块入门区非常简单&#xff0c;适合一些刚解除安全或者对网络安全常识比较了解的同学在安全搞累之余娱乐娱乐。 其主要考察下面几点&#xff1a; 基本的PHP、Python、JS语法基本的代理BurpSuite使用基本的HTTP请…...

vue 路由懒加载

一、为什么要使用路由懒加载 为给客户更好的客户体验&#xff0c;首屏组件加载速度更快一些&#xff0c;解决白屏问题。 懒加载则可以将页面进行划分&#xff0c;需要的时候加载页面&#xff0c;可以有效的分担首页所承担的加载压力&#xff0c;减少首页加载用时。 二、定义…...

C/C++问题处理:(Leetcode) Line 16: Char 21: error: redefinition of ‘j‘ for(int j=0,j<n;j++)

今天刷leetcode 遇到了个小问题&#xff1a; redefinition of j 意思是 j 这个变量重复定义&#xff0c;可往前检查了一遍&#xff0c;并没有定义这个变量。 网上的解释都是说&#xff1a;目标头文件.h没有加条件编译语句 其实还有一种情况&#xff0c;就是像上面代码里 f…...

Hive表类型(存储格式)

转载专用&#xff1a;读到了好文章&#xff0c;用于分享收藏&#xff0c;侵权删。转发自大佬&#xff1a;桥路丶 &#xff0c;https://blog.csdn.net/qq_33876553版权声明&#xff1a;本文为CSDN博主「桥路丶」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载…...

Elasticsearch:使用 Debian 软件包安装 Elasticsearch

Elasticsearch 的 Debian 包可以从我们的网站或我们的 APT 仓库下载。 它可用于在任何基于 Debian 的系统上安装 Elasticsearch&#xff0c;例如 Debian 和 Ubuntu。 Elasticsearch 的最新稳定版本可以在下载 Elasticsearch 页面上找到。 其他版本可以在过去的版本页面上找到。…...

MATLAB基础语法之拟合算法

%data1.mat数据如下 %导入data1的数据 load data1%以x为自变量&#xff0c;y为因变量&#xff0c;o为点的形状作散点图 plot(x,y,o)% 给x和y轴加上标签 xlabel(x的值)ylabel(y的值)%返回data1数据行数n 19 n size(x,1); %最小二乘法求解拟合曲线参数 k (n*su…...

SpringBoot集成支付宝支付(沙箱环境)

项目结构&#xff1a; 项目依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boo…...

vue——父子组件的数据传递

父子组件的数据传递 1、 父>子&#xff08;通过属性的形式&#xff09;&#xff1a; &#xff08;1&#xff09;在子组件的标签里设置属性【如 :count“0” 】。给属性前面加上冒号&#xff0c;参数‘0’会变成数字格式&#xff08;变为一个js表达式&#xff09;&#xff…...

spring-boot-starter-redis和spring-boot-starter-data-redis的依赖的区别

spring-boot-starter-redis 1.4.1.RELEASE版本 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId><version>1.4.1.RELEASE</version></dependency> 具体引入的依…...

elementui 自定义表头 renderHeader的写法 给增加el-tooltip的提示

<el-table-column prop"status" :render-header"renderHeader" ><template slot-scope"scope">{{scope.row.status}}</template> </el-table-column> renderHeader(h, { column}) {return [column.property,h(el-toolt...

潇洒郎:Python建立自己的包与发布自己的包供他人使用

1、建立自己的包&#xff1a; 2、发布包&#xff1a; 3、安装包&#xff1a; 4、 安装包...

.Net Core 5 查看当前CPU 占用比例

class Program{public static async Task Main(string[] args){var task Task.Run(() > ConsumeCPU(50));while (true){await Task.Delay(2000);var cpuUsage await GetCpuUsageForProcess();Console.WriteLine(cpuUsage);}}public static void ConsumeCPU(int percentag...

element-ui 中使用 table 根据状态设置某一行的复选框选择为禁用状态

element-ui 中使用 table表格时根据某一行数据状态设置复选框 选择是否为禁用状态如图中表格&#xff0c;状态为1时可以勾选复选框在el-table-column 复选框行中增加 :selectable“selectable” 属性 <el-table-column type"selection" :selectable"selectab…...

vue 实现两级表头表格下载

首先需要引用两个js Blob.js 对应第一个 Export2Excel.js 对应第二个 /* eslint-disable */ /* Blob.js* A Blob implementation.* 2014-05-27** By Eli Grey, http://eligrey.com* By Devin Samarin, https://github.com/eboyjr* License: X11/MIT* See LICENSE.md*//*glo…...

wordpress新创建文章404问题解决

修改httpd.conf 找到AllowOverride None修改为ALL...

如何快速打好Java基础 初学者常用哪些工具

如何快速打好Java基础&#xff0c;初学者常用哪些工具&#xff1f;从来不认为学好技术能和快速划上等号&#xff0c;对于技术而言&#xff0c;快速掌握的只是大体的技术框架&#xff0c;想要深入学习&#xff0c;还是需要时间的沉淀和技术经验的积累。 对于初学者而言&#xff…...

毕设系列 -- 基于STM32的人体红外测温枪温度采集系统

文章目录1 简介2 主要器件3 实现效果4 设计原理MLX90614 红外温度传感器5 部分实现代码6 最后1 简介 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天向大家介绍一个学长做的单片机项目 基于STM32的人体红外测温枪温度采集系统 大家可用于 课程设计 或 毕业…...

创龙AM5728 DSP+ARM开发板TL5728-IDK测试

前言 之前使用过创龙&#xff08;Tronlong&#xff09;的达芬奇系列的DM8168产品&#xff0c;后面留意过创龙的AM5728平台的动态。经公司购买了TL5728-IDK开发板&#xff0c;研究了一番后&#xff0c;提供简单测评&#xff0c;供大家参考。 我的项目是基于GIGE工业相机和EtherC…...

TL437x-IDK开发板硬件说明书

前 言 TL437x-IDK是广州创龙基于SOM-TL437x核心板研发的一款TI ARM Cortex-A9开发板&#xff0c;采用核心板底板方式&#xff0c;尺寸为205mm125mm&#xff0c;核心板采用460pin B2B工业级连接器&#xff0c;稳定、可靠、便捷&#xff0c;可以帮助客户快速评估核心板性能。 SOM…...

linux 卸载自带java_Ubuntu 12.04 卸载自带OpenJDK, 手动下载IDK并配置Java运行环境

1. 卸载系统自带的openjdk :sudo apt-get purge openjdk*2. 把下载的jdk放到/usr/java/下 :sudo ~/Downloads/jdk-6u33-linux-i586.bin /usr/java3. 给下载到的jdk安装文件添加可执行权限&#xff0c;安装 :cd /usr/javasudo chmod ax jdk-6u33-linux-i586.binsudo ./jdk-6u…...

MAC 安装idk

转载&#xff1a; jdk安装 http://www.cnblogs.com/quickcodes/p/5127101.html idk环境变量配置 http://www.cnblogs.com/quickcodes/p/5398709.html...

linux环境下安装idk

删除旧的包和平台不需要的包: 删除旧的内核版本: # rpm -qa | grep kernel kernel-2.6.32-431.el6.x86_64 libreport-plugin-kerneloops-2.0.9-21.el6.centos.x86_64 dracut-kernel-004-356.el6.noarch kernel-headers-2.6.32-504.3.3.el6.x86_64 kernel-firmware-2.6.32…...

idea 配置idk

[Toc]#一、idea配置全局jdk##1.1 File-->Project Structure##1.2 选择SDKs##1.3 选择jdk路径即可&#xff0c;可以添加多个jdk#二、配置项目jdk## 2.1同样进入File-->Project Structure进入Project&#xff0c;选择你项目想要的jdk来自为知笔记(Wiz)转载于:https://www.c…...

Immundiagnostik IDK TurbiPEL测定分析

Immundiagnostik艾美捷 IDK  TurbiPEL测定人类粪便样本中的胰腺弹性蛋白酶。该测试用于辅助诊断胰腺外分泌功能不全和监测胰腺外分泌功能。 Immundiagnostik 艾美捷IDK  TurbiPEL提供 3 种包装尺寸&#xff1a; 100 次测试 (TU1011.1) 200 次测试 (TU1011.2) 800 次测试 (…...

SOM-TL138F基于GDB和GDBServer的远程调试方法

1前言 表 1 开发板型号 是否支持本实验 TL437x-EVM 支持 TL437x-EasyEVM 支持 TL437x-IDK 支持 TL437xF-EVM 支持 操作环境&#xff1a; Ubuntu 14.04.3 64bit GDBServer远程调试是应用程序在开发板上运行&#xff0c;然后在PC上对开发板上的应用程序进行调试&#xff0c;P…...

IDK(自己瞎想的一种共识算法)

-------------------------------2020-05-02更新--------------------------------- 很久没有正式发博客了。 去年加了几个云原生和区块链的社区和技术群&#xff0c;有问题基本都在社区/群里解决了&#xff0c;再加上用印象笔记越来越多&#xff0c;基本上有什么想法都会随手…...

Redis系列之如何高效使用

本文将从防止阻塞和内存节约两个方面介绍如和高效使用Reids。 欢迎关注公众号&#xff1a;闲余说 使用Redis时&#xff0c;我们需要结合具体业务和Redis特性两方面来考虑如何设计使用方案。需要两个从两个方面考虑&#xff1a; 防止阻塞节约内存 下面&#xff0c;我们将就上面…...

python学习之路(3)turtle画奥运五环

目录turtle的相关函数五环的图片五环的原理图turtle实现turtle的相关函数 import turtle # 导入turtle模块 turtle.showturtle() #显示箭头 turtle.write(“XXX”) #写字符串 turtle.forward(300) #前进300像素 turtle.color(“red”) #改变画笔的颜色为”红色“ turtle.left(9…...

利用python绘制奥运五环_画一个大家心中的奥运五环。 绘制奥运五环主要涉及到Python中的turtle绘图库运用: turtle.forward(distance) 向当前画笔方向移动dista

【单选题】透视裁剪工具是裁剪工具的加强版,一般用于相机或者摄影机()问题造成的畸变。【多选题】关于围护结构传热耗热量的说法正确的是( )【判断题】对同一张图片改变大小有两种方式,其一是将图像中的部分信息去掉,即裁剪图片,需要用到工具箱中的裁剪工具。【单选题】调整使商…...

Object Detection 之 R-CNN/SPPNet/Fast R-CNN/Faster R-CNN

Background: 论文发表之前的一段时间内&#xff0c;Object detection以mAP(mean Average precision)进展缓慢&#xff0c;于是有些大神开始将Classification和Localization进行结合&#xff0c;从而诞生出一系列优秀的Detection方法  1. propose R-CNNpaper:R-CNN  1.5.SP…...

[c++基础]-vector类

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、 vect…...

CNN(卷积神经网络)在视频动作分类中的应用

简介Large-scale Video Classification with Convolutional Neural Networks Fusion MethodMulti-resolution CNN Two-Stream Convolutional Networks for Action Recognition in Videos 简介 最近接触了一些卷积神经网络的只是以及其在视频动作分类中的应用&#xff0c;本文对…...

cnn 部分初级代码

主要依赖的库&#xff1a;pytorch&#xff0c;torchvision torchvision用于导入自带的数据&#xff0c;类型Tensor了解。 Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解_ZZY_dl的博客-CSDN博客_f.softmax函数 防止过拟合。dropout import torch import torch.nn…...

[论文素材]Background----CNN

CNN是什么 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是最具有代表性的深度算法之一&#xff0c;受到人类视觉神经系统的启发,通过卷积计算提取特征的一种前馈神经网络, 具有表征学习&#xff08;representation learning&#xff09;能力&#…...

按一定规律将电文变成密码: 将字母A变为E、将字母a变为e,即变成其后的第四个字母,W将变成A。字母按上述规律转换,非字母字符不变。输入一行字符,输出相应密码。

#include “stdio.h” void main() { char c; while((cgetchar())!’\n’) { if((c>‘a’&&c<‘z’)||(c>‘A’&&c<‘Z’)) { cc4; if(c>‘Z’&&c<‘Z’4||c>‘z’) cc-26; } printf("%c",c); } printf("\n"…...

要将“China”译成密码,密码规律是:用原来的字母后面第四个字母代替原来的字母。例如字母A后面第四个字母是E,用E替代A。因此“China”应译为“Glmre”。请编写一个程序,用赋初值的方法使c1

题目&#xff1a;要将“China”译成密码,密码规律是:用原来的字母后面第四个字母代替原来的字母。例如字母A后面第四个字母是E,用E替代A。因此“China”应译为“Glmre”。请编写一个程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为G、l、m、r、e,经过运算使得其变…...

Python实例:随机生成100个验证码(两个数字四个字母随机组合)

随机生成100个验证码&#xff08;两个数字四个字母随机组合&#xff09; import random import string print(random.choice("0123456789")) print(random.choice("0123456789") random.choice(0123456789)) print(string.ascii_letters) print(random.s…...