selenium基础知识大全(转)

selenium基础知识大全(转)

2023年6月29日发(作者:)

selenium基础知识⼤全(转)⾃动化测试基础1、软件测试分类根据项⽬流程:单元测试(编码)、集成测试(设计)、系统测试(需求)、验收测试根据代码是否可见:⽩盒测试、⿊盒测试、灰盒测试功能测试:逻辑功能测试、界⾯测试、易⽤性测试、安装测试、兼容性测试性能测试:负载测试、压⼒测试⼿⼯测试:⼿⼯执⾏测试⽤例⾃动化测试:性能⾃动化和功能⾃动化冒烟测试:在对系统进⾏正式测试之前,先验证主要功能是否实现,是否具备可测性回归测试:修改代码之后确保没有引⼊新的错误,或导致其他代码产⽣错误随机测试:为了模拟⽤户的操作,测试中输⼊的数据都是随机的,以便发现⼀些边缘性的错误探索性测试:强调主观能动性,碰到问题时主动改变策略安全测试:验证产品是否符合安全需求定义和产品质量标准2、什么项⽬适合⾃动化 1)项⽬需求变动不频繁(回归测试,每⽇构建后的测试验证) 2)项⽬周期长 3)⾃动化测试脚本可复⽤3、⾃动化测试分类和⼯具 1)分类:UI⾃动化、接⼝⾃动化、单元测试⾃动化 2)⼯具: QTP:企业级⾃动化测试⼯具,⽀持B/S,C/S架构 robot framework:Python语⾔编写,⽀持关键字驱动,分布式测试 Watir:基于web模式的功能⾃动化测试⼯具 selenium:⽀持多语⾔、多平台、多浏览器4、selenium⼯具 1)特点:多语⾔---Java、Python、PHP、ruby 多平台---Windows、Linux、Mac 多浏览器----Firefox、chrome、IE 开源、免费 简单、灵活 2)selenium1.0selenium IDE:实现浏览器操作的简单录制和回放,⽀持多种语⾔selenium Grid:⾃动化测试辅助⼯具 并⾏执⾏ 通过⼀个主机控制⽤例在不同环境、不同浏览器下执⾏selenium RC:selenium的核⼼,⽀持多种编程语⾔编写脚本,通过selenium服务器作为代理服务器去访问应⽤,从⽽实现测试的⽬的。selenium RC:client libraries---编写测试脚本,控制selenium server的库 selenium server---控制浏览器⾏为selenium server:selenium core---⼀堆js函数,嵌⼊到浏览器中,通过这些函数控制浏览器操作 launcher---启动浏览器,并将selenium core加载到浏览器中,将selenium server的http proxy设置为浏览器的代理服务器 3)selenium2.0webdriver替代了selenium RC,为了向下兼容性,selenium RC仍然可以使⽤selenium RC通过嵌⼊到浏览器中的js函数操作webdriver针对各浏览器开发,通过原⽣浏览器⽀持或者浏览器扩展控制浏览器简单⾃动化测试脚本Python webdriver API1、浏览器操作 1)浏览器最⼤化 ze_window() 2)设置浏览器宽和⾼ _window_size(400,800) 3)控制浏览器前进、后退 d() ()2、简单对象的定位find_element_by_id()----唯⼀find_element_by_name()----唯⼀find_element_by_linx_text()----操作对象是⽂字超链接find_element_by_partial_link_text()----操作对象是⽂字超链接find_element_by_class_name()find_element_by_tag_name()find_element_by_xpath()暂时可以通过firepath定位xpath路径,以后再研究find_element_by_css_selector()这个真的不懂,firebug⾥⾯可以定位3、操作测试对象clear()---------------清除内容,如默认⽤户名和密码click()-------------- 模拟⿏标点击操作send_keys()------向输⼊框输⼊submit()------------提交表单4、WebElement接⼝常⽤⽅法size--------------------返回元素尺⼨text----------------------获取元素⽂本信息get_attribute(name)-------------获取元素某个属性值is_displayde-----------------------该元素⽤户是否可见5、⿏标事件ActionChains类操作⿏标事件ActionChains的使⽤from chains import ActionChainsActionChains的执⾏原理ActionChains的执⾏原理调⽤ActionChains⽅法的时候,⽤户⾏为不会⽴刻执⾏,⽽是将所有操作放在⼀个队列中,当执⾏perform()⽅法时,按照放⼊队列的顺序先进先出执⾏ActionChains⽅法的书写格式ActionChains(driver).context_click(操作对象).perform()⿏标点击context_click()------------------⿏标右击double_click()------------------⿏标双击(应⽤场景:查看图⽚,双击选定⽂字)click()-----------------------------⿏标点击click_and_hold()---------------按住⿏标左键不懂⿏标移动move_to_element(⽬标元素)------------------------移动到某个元素move_by_offset(xoffset,yoffset)--------------------移动到某个坐标⿏标拖曳drag_and_drop(source,target)------将元素从起点source移动到终点targetdrag_and_drop_by_offset(source,xoffset,yoffset)-------按照坐标移动6、键盘事件Keys类操作键盘事件Keys类的使⽤from import Keys常⽤的组合键send_keys(L,'a')----------------全选send_keys(L,'c')----------------复制send_keys(L,'v')----------------粘贴send_keys(L,'x')----------------剪切常⽤的⾮组合键send_keys()--------------------------------回车键send_keys(_SPACE)----------------------删除键send_keys()--------------------------------空格键send_keys()------------------------------------制表键send_keys()------------------------------回退键send_keys(Keys.F5)---------------------------------------刷新键7、获得页⾯URL和title1)获得当前页⾯title,判断页⾯跳转是否符合预期title = 2)获得当前URL,⼀般⽤来测试重定向url = t_url8、设置等待时间sleep():设置固定休眠时间。Python的time包提供sleep⽅法implicitly_wait():webdriver提供的⼀个隐性等待的时间,在⼀个时间段内只能的等待,超时则抛出异常WebDriverWait():webdriver提供的另⼀个⽅法,在设置时间内,默认每隔⼀段时间去检测页⾯元素是否存在,如果超出设置时间检测不到则抛出异常。WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)timeout - 最长超时时间,默认以秒为单位poll_frequency - 休眠时间的间隔(步长)时间,默认为0.5 秒ignored_exceptions - 超时后的异常信息,默认情况下抛NoSuchElementException 异常。9、定位⼀组对象find_elements返回的是⼀个list定位⼀组对象,⼀般应⽤于下列场景: 批量操作对象,⽐如将页⾯上的CheckBox都选上1)find_elements_by_tag_name()2)find_element_by_css_selector()10、定位frame中的对象针对frame嵌套的情况,使⽤switch_(id/name/xpath)切换到被嵌套的frame中11、多窗⼝处理要想在多个窗⼝之间切换,⾸先要获得每⼀个窗⼝的唯⼀标识符号(句柄)。通过获得的句柄来区别分不同的窗⼝,从⽽对不同窗⼝上的元素进⾏操作t_window_handle----------------------获得当前窗⼝的句柄_handles--------------------------------获得所有窗⼝的句柄_to_handle("句柄")---------------------切换回句柄所属的窗⼝()---------------------------------------------关闭当前窗⼝()-----------------------------------------------关闭所有窗⼝12、下拉菜单处理1)传统下拉菜单先定位到下拉菜单,再点击选项2)下拉菜单需点击才能显⽰选项有两次点击动作,第⼀次点击下拉菜单,第⼆次点击选项3)下拉菜单不需点击,⿏标放上去就会显⽰选项,则可以使⽤move_to_element()⽅法定位4)针对下拉菜单标签是select的导⼊Select类:from import Select使⽤⽅法:Select(_element_by_name("xxx")).select_by_index()选择列表:select_by_index(index)---------------------------根据index属性定位选项,index从0开始select_by_value(value)---------------------------根据value属性定位select_by_visible_text(text)----------------------根据选项⽂本值来定位first_selected_option()----------------------------选择第⼀个选项清除列表deselect_by_index(index)---------------------------根据index属性清除选定的选项,index从0开始deselect_by_value(value)---------------------------根据value属性deselect_by_visible_text(text)----------------------根据选项⽂本值deselect_all()--------------------------------------------清除所有选项13、上传⽂件上传过程⼀般是打开⼀个系统的window窗⼝,从窗⼝选择⽂件添加,⼀般会卡在如何操作Window窗⼝。其实,没那么复杂,只要定位上传按钮,通过send_keys()添加⽂件路径就可以了。上传控件标签为input上传控件标签为⾮input可以借助第三⽅⼯具:Autolt14、下载⽂件webdriver允许设置默认下载路径,从⽽可以跳过下载弹窗提⽰1)chrome下载思路:实例化⼀个option对象 设置配置,并加载到option中 启动浏览器,点击下载链接优势:使⽤⾕歌浏览器下载,不需要针对各种⽂件类型进⾏配置2)Firefox下载对于Firefox,需要我们设置其Profile::指定下载路径List:设置成2表⽰使⽤⾃定义下载路径;设置成0表⽰下载到桌⾯;设置成1表⽰下载到默认路径enStarting:在开始下载时是否显⽰下载管理器Disk:对所给出⽂件类型不再弹出框进⾏询问Firefox需要针对每种⽂件类型进⾏设置,这⾥需要我们查询对应⽂件的MIME类型,可以⽤以下链接进⾏查询:MIME 参考⼿册15、调⽤js和控制浏览器滚动条1)webdriver提供了execute_script(script,*args)⽅法调⽤js2)控制浏览器滚动条应⽤场景:判断法律⽂件是否阅读完,滚动条拉倒最下⾯,表⽰⽤户已看完 要操作的元素不在视觉范围内,需要拖动滚动条⽕狐浏览器⾕歌浏览器16、处理_cookies()-------------------------------获得所有_cookie(name)-------------------------获得name属性的_cookie(cookie_dic)-----------------添加cookie(cookie格式为字典,)_cookie(name)---------------------删除特定_all_cookies()----------------------删除所有cookie17、验证码问题跳过验证码的⽅法:1)去掉验证码2)设置万能码3)通过cookie跳过验证码登录18、webdriver原理1)WebDriver 启动⽬标浏览器,并绑定到指定端⼝。该启动的浏览器实例,做为web driver 的remote server。2)Client 端通过CommandExcuter 发送HTTPRequest 给remote server 的侦听端⼝(通信协议: the webriver wire protocol)3)Remote server 需要依赖原⽣的浏览器组件(如:、),来转化转化浏览器的native 调⽤。

⾃动化测试模型1、⾃动化测试模型介绍1)模块化与类库将脚本中重复可复⽤的部分拿出来写成⼀个公共的模块,需要的时候就调⽤它,可以⼤⼤提⾼测试⼈员编写脚本的效率。如将登录和退出模块化模块化的优点:提⾼效率,不⽤编写重复脚本 需要修改代码时,只需要修改模块代码,调⽤模块的代码不需要修改2)数据驱动数据驱动可理解成参数化,输⼊数据的不同从⽽导致输出结果的不同将数据与脚本分离3)关键字驱动通过关键字的改变引起结果的改变QTP、robot framework 等都是以关键字驱动为主的⾃动化⼯具2、登录模块化3、数据驱动(参数化)参数化⽅式:读取TXT⽂件和CSV⽂件、函数、字典

1)读取TXT⽂件分别打开两个⽂件,将⽤户名和密码赋值给变量,传递给输⼊框缺点:⽤户名和密码在不同的⽂件中,修改较⿇烦 ⽂件中只能保存⼀个⽤户名和密码,不能循环读取2)登录参数化(函数)user_登录模块中,通过2个变量来接受函数返回的值(⽤户名、密码)3)登录参数化(字典)user_登录模块通过字典的键值对取值4)表单参数化通过WPS 或excel 创建表格,⽂件另存为选择CSV 格式()⽤于读取CSV ⽂件,user[0] 表⽰表格中第⼀⾏第⼀列的数据(⽤户名),user[1]表⽰表格中第⼀⾏第⼆列的数据(邮箱),后⾯类推。通过CSV 读取⽂件⽐较灵活,可以循环读取每⼀条数据,从⽽⼜不局限每次所读取数据的个数。⾃动化测试⽤例设计1、⼿⼯测试⽤例和⾃动化测试⽤例⼿⼯测试⽤例

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688021032a67438.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信