首页 Robot Framework Selenium自动化入门_虫师

Robot Framework Selenium自动化入门_虫师

举报
开通vip

Robot Framework Selenium自动化入门_虫师博客园--虫师http://fnng.cnblogs.com1RobotFramework+Selenium自动化测试入门--虫师个人博客:http://fnng.cnblogs.com更多测试课程与公开课:http://itest.info/博客园--虫师http://fnng.cnblogs.com2目录介绍..........................................................................................................

Robot Framework Selenium自动化入门_虫师
博客园--虫师http://fnng.cnblogs.com1RobotFramework+Selenium自动化测试入门--虫师个人博客:http://fnng.cnblogs.com更多测试课程与公开课:http://itest.info/博客园--虫师http://fnng.cnblogs.com2目录介绍.......................................................................................................................................................................2RobotFramework是什么?.......................................................................................................................2Selenium是什么?.....................................................................................................................................2一、RobotFrameworkSelenium环境搭建.......................................................................................................4二、创建第一个自动化脚本..............................................................................................................................51、创建测试项目..........................................................................62、创建测试套件......................................................................63、创建测试用例............................................................................74、导入selenium2library库...............................................................................75、编写用例......................................................................86、运行测试用例......................................................................9三、Selenium元素定位....................................................................................................................................111、id和name定位...........................................................................112、xpath定位.............................................................................................123、CSS定位............................................................................14四、RobotFrameworkSeleniumAPI.............................................................................................................16一、浏览器驱动........................................................................................................................................17二、关闭浏览器........................................................................................................................................18三、浏览器最大化....................................................................................................................................18四、设置浏览器宽、高............................................................................................................................18五、文本输入............................................................................................................................................19六、点击元素............................................................................................................................................19七、点击按钮............................................................................................................................................19八、注释.....................................................................................................................................................19九、固定时间休眠....................................................................................................................................20十、等待元素出现在当前页面................................................................................................................20十一、获取title.........................................................................................................................................20十二、获取文本信息................................................................................................................................21十三、获取元素属性值............................................................................................................................21十四、cookie处理.....................................................................................................................................21十五、声明变量........................................................................................................................................22十六、日志(输出)................................................................................................................................22十七、获得浏览器窗口宽、高................................................................................................................23十八、验证................................................................................................................................................23十九、表单嵌套........................................................................................................................................24二十、下拉框选择....................................................................................................................................24二十一、If分支语句.................................................................................................................................24二十二、for循环语句..............................................................................................................................25五、RobotFramework分层 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 .....................................................................................................................261、创建用户关键字..................................................................................................................................282、添加调用关键字..................................................................................................................................31博客园--虫师http://fnng.cnblogs.com3介绍RobotFramework是什么?RobotFramework的架构是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD)。它具有易于使用的表格来组织测试过程和测试数据。NewTestCaseopenbrowserhttp://www.baidu.cominputtextid=kwrobotframeworkclickbuttonid=suclosebrowser它使用关键字驱动的测试方法。对于上面的例子来说,openbrowser、inputtext、clickbutton和closebrowser,都是“关键字”,这些关键字由robotframework-selenium2library类库所提供。当然,我们也可以自定义关键字。其检测能力可以通过测试库实现可以使用Python或Java的扩展,用户可以使用相同的语法,用于创建测试用例创建新的更高层次的现有的关键词。RobotFramework的操作系统和应用独立框架。核心框架是使用Python和运行在Jython(JVM)和IronPython(.NET)。Selenium是什么?Selenium是web自动化测试工具集,包括IDE、Grid、RC(selenium1.0)、WebDriver(selenium2.0)等。SeleniumIDE是firefox浏览器的一个插件。提供简单的脚本录制、编辑与回放功能。SeleniumGrid是用来对测试脚步做分布式处理。现在已经集成到seleniumserver中了。RC和WebDriver更多应该把它看成一套规范,在这套规范里定义客户端脚步与浏览器交互的协议。以及元素定位与操作的接口。WebDriverAPI是什么?博客园--虫师http://fnng.cnblogs.com4对于刚接触selenium自动化测试的同学来说不太容易理解API是什么,它到底和编程语言之是什么关系。WebdriverAPI(接口规范)说,我们要提供一下id的定位方法。Ruby的webdriver模块是这么实现的:require"selenium-webdriver"#导入ruby版的selenium(webdriver)find_element(:id,"xx")#id定位方法C#的webdriver模块是这么实现的:usingOpenQA.Selenium;usingOpenQA.Selenium.Firefox;//导入C#版的selenium(webdriver)FindElement(By.Id("xx"))//id定位方法python的webdriver模块是这么实现的:fromseleniumimportwebdriver#导入python版的selenium(webdriver)find_element_by_id("xx")#id定位方法Java的webdriver模块是这么实现的:importorg.openqa.selenium.*;importorg.openqa.selenium.firefox.FirefoxDriver;//导入java版的selenium(webdriver)findElement(By.id("xx"))//id定位方法RobotFramework+selenium因为RobotFramework对于底层过于封装,所以,更看不到语言层面的方法定义。所以,提供给我们的方法如下:1、导入RobotFramework版本的selenium(webdriver)2、使用id方法Clickelementid=xx博客园--虫师http://fnng.cnblogs.com5需要说明的是webdriverAPI只提供了页面操作的相关规范,比如元素定位方法,浏览器操作,获取web页元素属性等。一、RobotFrameworkSelenium环境搭建最近工具中用RobotFramework框架来做自动化,所以,花时间学习了一下。=======所需环境===================Python:https://www.python.org/RF框架是基于python的,所以一定要有python环境。Robotframework:https://pypi.python.org/pypi/robotframework/2.8.5这个不是解释了,RF框架。虽然在做基于UI的自动化时,它展现出来的很像QTP,我之前也以为它和QTP差不多,仔细了解你会发展它能做的事情还是很多的。就像初学selenium者,会误以为selenium就是seleniumIDE。wxPython:http://www.wxpython.org/download.phpWxpython是python非常有名的一个GUI库,因为RIDE是基于这个库开发的,所以这个必须安装。Robotframework-ridehttps://pypi.python.org/pypi/robotframework-rideRIDE就是一个图形界面的用于创建、组织、运行测试的软件。博客园--虫师http://fnng.cnblogs.com6Robotframework-selenium2library:https://pypi.python.org/pypi/robotframework-selenium2library/1.5.0RF-seleniumlibrary可以看做RF版的selenium库,selenium(webdriver)可以认为是一套基于web的规范(API),所以,RF、appium等测试工具都可以基于这套API进行页面的定位与操作。----------------------可以通过python的pip工具包进行安装:>pipinstallrobotframework-selenium2library如果初次接触上面的东西的话,觉得装的东西有点多。如果之前有了解过python或selenium的话就不会有这样的感觉。在你安装好RF-RIDE之后,桌面就会生成一个RIDE图标。双击启动,界面如下:二、创建第一个自动化脚本下面我们就一步一步的创建第一条用例,至于细节不多解释,只是对RF框架写用例有个感性的认识。博客园--虫师http://fnng.cnblogs.com71、创建测试项目选择菜单栏file----->newProjectName输入项目名称。Type选择Directory。2、创建测试套件右键点击“测试项目”选择newSuite选项Name输入项目名称。Type选择File。博客园--虫师http://fnng.cnblogs.com83、创建测试用例右键点击“测试项目”选择newTestCase用例只需要输入用例name,点击OK即可。4、导入selenium2library库因为RF框架编写基于web的测试用例,所以,我们需要selenium的库支持。所以,我们在使用的过程中需要加载selenium2library库。博客园--虫师http://fnng.cnblogs.com9在“测试套件”的Edit标签页,点击“Library”按钮,弹出输入框,Name输入:Selenium2Library,点击OK完。如果导入的库显示为红色,表示导入的库不存在。如果是黑色则表示导入成功。5、编写用例下面就可以开始写我们的用例了,可是怎么写呢?我们可以通过按F5快捷键来查询脚本的关键字。如果你接触过QTP或seleniumIDE等自动化工具的话,应该会有一些思路。如上图,自动化脚本从打开浏览器开发,如上图,我想打开一个浏览器,想的是“open”为关键字进行搜索,结果找到了一个“OpenBrowser”的关键字,点击这个关键字,想显示它的用法和说明。根据说明,我们来尝试创建这个打开浏览器的操作吧:博客园--虫师http://fnng.cnblogs.com10“OpenBrowser”变蓝了,说明它是一个合法的关键字,后面有一个方框是红色的,表示这个参数不能缺省的。通过说明信息中,我发现它需要一个url地址是必填的,当然还需要指定browser(默认不填为friefox)更多关键的使用,请参考相关API文档。这里不过多介绍。按照上面的方法。创建百度搜索用例如下:6、运行测试用例勾选当前需要运行的测试用例,点击工具栏运行按钮,如果只运行单个用例的话,也可以切换到用例的Run标签页,点击“start”按钮。博客园--虫师http://fnng.cnblogs.com11运行结果:运行信息显示会生成三个文件:Output.xml、Log.html、Report.html我们重点查看Log.html和Report.html,Log.html更关注脚本的执行过程的记录,Report.html更关注脚本的执行结果的展示。赶快打开你的测试报告看看效果吧!博客园--虫师http://fnng.cnblogs.com12三、Selenium元素定位1、id和name定位假如把一个元素看作一个人的话,id和name可以看作一个人的身份证号和姓名。当然,这些属性值是否唯一要看前端工程师如何设计了。百度搜索框和搜索按钮……<inputid="kw1"class="s_ipt"type="text"maxlength="100"name="wd"autocomplete="off">……<inputid="su1"class="bgs_btn"type="submit"onmouseout="this.className='bgs_btn'"onmousedown="this.className='bgs_btns_btn_h'"value="百度一下">……根据上面的例子,百度输入框可以取id或name进行定位。(前提是id和name的值在当页面上唯一)id=kw1博客园--虫师http://fnng.cnblogs.com13name=wd在Robotframework中就是这样写的:InputTextid=kw1robotframework学习inputtextname=wdrobotframework学习Inputtext用于输入框的关键字,“robotframework学习”是要给输入框输入的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 。百度按钮只id数据可以利用:id=su1ClickButtonid=su1ClickButton是按钮点击的关键字。2、xpath定位假如,一个人没身份证号没名字怎么找呢?想想你是怎么找朋友吃饭的,他手机不通,电话不回呢?直接上他家去呗,那你一定有他家住址,xx市xx区xx路xx号。Xpath就可以通过这种层级关系找到元素。来看看百度输入框在整个页面上的位置吧:<html><head><bodylink="#0000cc"><divid="wrapper"style="display:block;"><divid="debug"style="display:block;position:absolute;top:30px;right:30px;border:1pxsolid;padding:5px10px;"></div><divid="u"><divid="head"><divid="content"style="display:block;"><divid="u1"style="display:block;"><divid="m"><pid="lg"><pid="nv"><divid="fm">博客园--虫师http://fnng.cnblogs.com14<formid="form1"class="fm"action="/s"name="f1"><spanclass="bgs_ipt_wr"><inputid="kw1"class="s_ipt"type="text"maxlength="100"name="wd"autocomplete="off">1、Xpath的绝对路径:Xpath=/html/body/div[1]/div[4]/div[2]/div/form/span[1]/input我们可以从最外层开始找,html下面的body下面的div下面的第4个div下面的....input标签。通过一级一级的锁定就找到了想要的元素。2、Xpath的相对路径:绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。2.1、元素本身:Xpath同样可以利用元素自身的属性:Xpath=//*[@id=’kw1’]//表示某个层级下,*表示某个标签名。@id=kw1表示这个元素有个id等于kw1。当然,一般也可以制定标签名:Xpath=//input[@id=’kw1’]元素本身,可以利用的属性就不只局限为于id和name,如:Xpath=//input[@type=’text’]Xpath=//input[@autocomplete=’off’]但要保证这些元素可以唯一的识别一个元素。2.2、找上级:当我们要找的一个人是个刚出生的婴儿,还没起名子也没有入户口(身份证号),但是你会永远跟在你父亲的身边,你的父亲是有唯一的名字和身份证号的,这样我们可以先找到你父亲,自然就找到你的。元素的上级属性为:<formid="form1"class="fm"action="/s"name="f1"><spanclass="bgs_ipt_wr">博客园--虫师http://fnng.cnblogs.com15<inputid="kw1"class="s_ipt"type="text"maxlength="100"name="wd"autocomplete="off">找爸爸:xpath=//span[@class=’bgs_ipt_w’]/input如果爸爸没有唯一的属性,可以找爷爷:xpath=//form[@id=’form1’]/span/input这样一级一级找上去,直到html,那么就是一个绝对路径了。2.3、布尔值写法:如果一个人的姓名不是唯一的,身份证号也不是唯一的,但是同时叫张三并且身份证号为123的人却可以唯一的确定一个人。那么可以这样写:Xpath=//input[@id=’kw1’and@name=’wd’]可以and,当然也可以or:Xpath=//input[@id=’kw1’or@name=’wd’]但or的实际意义不太。我们一般不需要说,找的人名字或者叫张三,或者身份证号是123也可以。Robotframework中的写法:InputTextxpath=//*[@id=’kw1’]robotframework学习inputtextxpath=//span[@class=’bgs_ipt_w’]/inputrobotframework学习inputtextxpath=//input[@id=’kw1’and@name=’wd’]robotframework学习3、CSS定位Css的定位更灵活,因为他它用到的更多的匹配符和规格。http://www.w3school.com.cn/cssref/css_selectors.asp博客园--虫师http://fnng.cnblogs.com16选择器例子例子描述.class.intro选择class="intro"的所有元素。#id#firstname选择id="firstname"的所有元素。**选择所有元素。elementp选择所有<p>元素。element,elementdiv,p选择所有<div>元素和所有<p>元素。elementelementdivp选择<div>元素内部的所有<p>元素。element>elementdiv>p选择父元素为<div>元素的所有<p>元素。element+elementdiv+p选择紧接在<div>元素之后的所有<p>元素。[attribute][target]选择带有target属性所有元素。[attribute=value][target=_blank]选择target="_blank"的所有元素。[attribute~=value][title~=flower]选择title属性包含单词"flower"的所有元素。[attribute|=value][lang|=en]选择lang属性值以"en"开头的所有元素。同样以百度输入框的代码,我们来看看CSS如何定位。<formid="form1"class="fm"action="/s"name="f1"><spanclass="bgs_ipt_wr"><inputid="kw1"class="s_ipt"type="text"maxlength="100"name="wd"autocomplete="off">id定位:css=#kw1class定位:css=.s_ipt其它属性:css=[name=wd]css=[type=text]css=[autocomplete=off]博客园--虫师http://fnng.cnblogs.com17父子定位:css=span>inputcss=form>span>input根据标签名定位:css=inputRobotframework中的写法:InputTextcss=#kw1robotframework学习inputtextcss=.s_iptrobotframework学习inputtextcss=[name=wd]robotframework学习同样一个元素,根基CSS的不同规则,可能有几十上百种写法。CSS更灵活强大,但是相比path的学习成本为更高。但是css和xpath两种定位方式是一定要学会一种,不然你的自动化工作更无法开展。四、RobotFrameworkSeleniumAPI说明:此文档只是将最常用的UI操作列出。更多方法请查找selenium关键字库。博客园--虫师http://fnng.cnblogs.com18一、浏览器驱动通过不同的浏览器执行脚本OpenBrowserHtpp://www.xxx.comchrome浏览器对应的关键字:firefoxFireFoxffinternetexplorerInternetExploreriegooglechromeGoogleChromegcchromeoperaOperaphantomjsPhantomJShtmlunitHTMLUnithtmlunitwithjsHTMLUnitwithJavasciptsupportandroidAndroid博客园--虫师http://fnng.cnblogs.com19iphoneIphonesafariSafari备注:要想通过不同的浏览打开URL地址,一定要安装浏览器相对应的驱动。如chrome的驱动:chromedriver.exe等。浏览器默认为空时启动FireFox。二、关闭浏览器关闭浏览器CloseBrowser关闭当前的浏览器。关闭所有浏览器CloseAllBrowsers关闭所有打开的浏览器和浏览器缓存重置。三、浏览器最大化MaximizeBrowserWindow使当前打开的浏览器全屏。四、设置浏览器宽、高GetWindowSize800600以像素为单位,第一个参数800表示宽度,第二个参数600表示高度。博客园--虫师http://fnng.cnblogs.com20五、文本输入InputTextXpath=//*[@]输入信息Xpath=//*[@]:表示元素定位,定位文本输入框。六、点击元素ClickElementXpath=//*[@]Xpath=//*[@]:表示元素定位,定位点击的元素。七、点击按钮ClickButtonXpath=//*[@]Xpath=//*[@]:表示元素定位,定位点击的按钮。八、注释注释1:Comment注释说明注释2:博客园--虫师http://fnng.cnblogs.com21#注释说明除了使用Comment关键字进行注释外,Robotframework框架是基于python语言开发的,所以提供了python语言的注释“#”方式。九、固定时间休眠Sleep42Sleep1.5Sleep2minutes10secondsSleep表示执行到当前行固定休眠多长时间,以“秒”为单位。42表示42秒;1.5表示1.5秒;2minutes10seconds表示2分10秒。十、等待元素出现在当前页面WaitUntilPageContainsElementXpath=//*[@]42errorXpath=//*[@]:表示元素定位,这里定位出现的元素42:表示最长等待时间。Error:表示错误提示,自定义错误提示,如:“元素不能正常显示”十一、获取titleGetTitle获得当前浏览器窗口的title信息。博客园--虫师http://fnng.cnblogs.com22这里只获取title是没有意义的,我们通常会将获取的title传递给一个变量,然后与预期结果进行比较。从而判断当前脚本执行成功。十二、获取文本信息GetTextXpath=//*[@]Xpath=//*[@]:定位文本信息的元素。十三、获取元素属性值GetElementAttributeid=kw@nameid=kw@name:id=kw表示定位的元素。@nam获取这个元素的name属性值。十四、cookie处理获取cookiegetcookies获得当前浏览器的所有cookie。获得cookie值getcookievalueKey_nameKey_name:key_name表示一对cookie中key的name。删除cookie博客园--虫师http://fnng.cnblogs.com23deletecookieKey_name删除key为name的cookie信息。删除所有cookiesdeleteallcookies删除当前浏览器的所有cookie。添加cookieaddcookieKey_nameValue_name添加一对cooke(key:value)十五、声明变量${a}SetVariablehello定义变量a为hello。${a}${b}=SetVariablehelloworld定义变量a为hello,b为world。十六、日志(输出)${a}SetVariableHelloWorldlog${a}在测试报告中输出a变量的值helloword。博客园--虫师http://fnng.cnblogs.com24十七、获得浏览器窗口宽、高${width}${height}getwindowsizelog${width}log${height}获得浏览浏览器窗口宽、高,通过log将宽高,打印到报告中。十八、验证openbrowserhttp://www.baidu.comchrome${title}GetTitleshouldcontain${title}百度一下,你就知道OpenBrowser通过chrome打开百度首页。GetTitle获得浏览器窗口的titile,并赋值给变量${title}博客园--虫师http://fnng.cnblogs.com25ShouldContain比较${title}是否等于“百度一下,你就知道”。如果item1不包含item2一次或多次,那么失败。十九、表单嵌套SelectFrameXpath=//*[@]UnselectFrameSelectFrame进入表单,Xpath=//*[@]表示定位要进入的表单。UnselectFrame退出表单。二十、下拉框选择UnselectFromListByValueXpath=//*[@]vlaueXpath=//*[@]定位下拉框;Vlaue选择下拉框里的属性值。二十一、If分支语句${a}Setvariable2博客园--虫师http://fnng.cnblogs.com26${b}Setvariable5runkeywordif${a}>=1loga大于1...ELSEIF${b}<=5logb小于等于5...ELSElog上面两个条件都不满足首先定义两个变量a,b分别为2和5。If判断a大于等于1,满足条件log输出“a大于1”;不满足上面的条件,接着elseif判断b小于等于5,满足条件log输出“b小于等于5”;上面两个条件都不满足,elselog输出“上面两个条件都不满足”。备注:注意seleif和else前面的三个点点点(...)二十二、for循环语句循环1:FOR${i}inrange10log${i}查看结果:循环变量i从0到9循环10次。博客园--虫师http://fnng.cnblogs.com27循环2@{a}createlistaaabbb:FOR${i}in@{a}log${i}@{a}定义为一个字符串列表。通过in可遍历非整型(inrange)说明:Log、if分支,for循环并非selenium关键字库的提供的方法,是由BuiltIn包提供。五、RobotFramework分层设计谈到RobotFramework分层的思想,就不得不提“关键字驱动”。关键字驱动:通过调用的关键字不同,从而引起测试结果的不同。博客园--虫师http://fnng.cnblogs.com28在上一节的seleniumAPI中所介绍的方法其实就是关键字,如“openbrowser”就是一个关键字。从底层去看它就是一个通过编程去现实的一个方法。defopen_browser(url,browser):#通过browser找到相应的浏览器驱动,调用浏览器,借助python的httplib、urllib模块将url传递给浏览器。从而实现openbrwoser的目的。通过上面的伪代码表述的“关键字”的底层其实还是程序定义的方法。回到分层的思想上,在程序设计的讲究设计模式,设计模式其实就是根据需求使用抽象与封装,其实就是分层思想。把一个实现过程分成不同多层。提高的灵活性,从而达到可扩展性和可维护性。再回到自动化的话 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 上,我们可以把操作步骤封装一个一个的方法(关键字),通过调用关键字来实现测试用例。http://www.cnblogs.com/fnng/p/3871712.html参考本系列的第一节创建一条百度搜索的测试用例。我现在要写五条百度搜索的用例:博客园--虫师http://fnng.cnblogs.com29可以在Search测试套件下创建5条测试用例。其实对于每一条测试用例来说,只是搜索的内容不同,脚本步骤是完全一样的。这样做无疑增加的脚本的冗余,而且不便于维护。假如,百度输入框的定位方式变了,我不得不打开每一条用例进行修改。我们可以过创建关键字的方式,从而实现分层的思想来解决这个问题。1、创建用户关键字RobotFramework创建关键字步骤:1、创建资源右键“测试项目”选择“newresource”创建资源。博客园--虫师http://fnng.cnblogs.com30输入资源名称:2、创建关键字右键“业务关键字”选择“newUserKeyword”来创建用户关键字。博客园--虫师http://fnng.cnblogs.com31输入关键字的名称:3、编辑关键字博客园--虫师http://fnng.cnblogs.com32 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 :对于一个测试用例来说,用户关心的是输入什么内容,得到什么结果。所以,对于“百度搜索”关键字来说,需要创建两个接口变量${search}和${result}两个变量,用于接收输入内容和预期结果。点击Arguments输入框,定义变量,多个变量从用“|”隔开。在百度用户中使用参数化变量。2、添加调用关键字4、添加创建的资源切换到测试套件(Search)页面,添加资源(业务关键字.txt)博客园--虫师http://fnng.cnblogs.com335、调用关键字现在就可以在测试用例中使用创建的关键字了(百度搜索)。对于每一条用例来说,调用“百度搜索”关键字,输入搜索内容,输入预期结果即可。不同关心用例是如何执行的。如果百度输入框的定位发生了变化,只用去修改“百度搜索”关键字即可,不用对每一条用例做任何修改。大大提高的用例的维护性和扩展性。继续分层的设计:博客园--虫师http://fnng.cnblogs.com34到此,RobotFramework+selenium自动化测试粗犷的讲完了。当然还有更多API的使用,和细枝末节的设置没有介绍。但我们已经可以拿它来开展自动化工作了。 介绍 RobotFramework是什么? Selenium是什么? 一、RobotFrameworkSelenium环境搭建 二、创建第一个自动化脚本 1、创建测试项目                      2、创建测试套件                      3、创建测试用例                     4、导入selenium2library库              5、编写用例                       6、运行测试用例                      三、Selenium元素定位 1、id 和name定位                    2、xpath定位                 3、CSS定位  
本文档为【Robot Framework Selenium自动化入门_虫师】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥18.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
雪莲
人民教育工作者
格式:pdf
大小:1MB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2019-05-03
浏览量:30