论⽂python+selenium⽹页⾃动化测试论⽂_测试基础:
Python+Seleni。。。
本⽂以⼀个页⾯例⼦说明运⾏⾃动化脚本需要哪些步骤及实现过程中的报错汇总。
具体实现功能:登录操作、进⼊三级菜单、新建页⾯输⼊⽂本框值,输⼊时间,进⼊iframe,点击提交按钮
⼀、⾃动化实现步骤
1. ⾸先需要导⼊模块名
有些功能selenium框架已经封装好了,只需要我们直接调⽤就好。
常⽤的导⼊功能:
大唐荣耀慕容林致结局from selenium import webdriver #导⼊webdriver驱动
from time import sleep #导⼊sleep函数
from selenium.webdrivermon.action_chains importActionChains #导⼊
ActionChains 函数
from selenium.webdriver.support.select import Select#导⼊select函数
webdriver驱动:通过webdriver驱动来调⽤浏览器
sleep函数:正常⽹页加载过程中,如果不通过时间等待再点击元素是⽆法定位到元素,从⽽报错,sleep函数是⾃动化过程中经常⽤到的功能
ActionChains函数:ActionChains是模拟⿏标事件的函数
2. 启动浏览器
所有的⾃动化操作都是基于页⾯打开的前提下,所以我们的⾸要步骤显⽰要启动浏览器。
在Selenium中可以启动任何浏览器,前提是需要下载相应的浏览器驱动这⾥以chrome浏览器为例,代码实现:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(options=chrome_options)
<("127.0.0.1:8080/portal-web/framework/login?")
driver.maximize_window()
3. 功能实现
3.1 元素定位
刚接触⾃动化的同学可能都被元素定位搞的晕头转向。
元素定位有⼋⼤⽅式(id、tagname、class、xpath等等),到底使⽤哪⼀种呢
所有的元素定位⽅式我都⽤到了,还是不能定位到元素这到底是什么原因呢?
刚开始我也是这样,经过⼀段时间的摸索发现原来是这样~~
元素定位-id,id是唯⼀,通过id可定位任何元素
元素定位-xpath定位:其他定位⽅式都不会,只要会xpath就能搞定定位问题
定位不到:考虑时间、窗体、ifame等因素
3.2 元素⽅法
1).click()-单击(最常⽤)
driver.find_element_by_id('dlu').click()
2)send_keys⽂本框输⼊内容
driver.find_element_by_id('password').send_keys('11qq!!')
实现功能:登录功能
driver.find_element_by_name("username").send_keys('b')#定位⽤户名,输⼊值
driver.find_element_by_id('password').send_keys('11qq!!')#定位密码,输⼊值
driver.find_element_by_id('dlu').click()#点击登录按钮
3)double_click 双击
ActionChains(driver).double_click(ul1).perform()
实现功能:双击进⼊三级菜单
ul1=driver.find_element_by_xpath("//*[text()='质量基础']")
ActionChains(driver).double_click(ul1).perform()#双击⼀级菜单
ul2=driver.find_element_by_xpath("//*[text()='供应商产品质量维持认证']")
ActionChains(driver).double_click(ul2).perform()#双击⼆级菜单
ul3=driver.find_element_by_xpath("//*[text()='供应商产品质量维持认证计划']")
ActionChains(driver).double_click(ul3).perform()#双击三级菜单
sleep(3)
4) iframe标签,这块属于⾃动化的重点及难点
driver.switch_to.frame('data_iframe')#进⼊标签
driver.switch_to.parent_frame() #跳回到上层标签
driver.switch_to.default_content()#退出标签
实现功能:三个 iframe 间切换操作
driver.switch_to.frame('data_iframe')#主页⾯窗体
driver.find_element_by_xpath('//*[@id="grid"]/div[1]/a[1]').click()
sleep(3)
# 第⼆个iframe填写内容新建
#下拉菜单⾮select类型,直接定位选择内容
iframe1 = driver.find_element_by_xpath('//*[@title="新建页⾯"]')
driver.switch_to.frame(iframe1) #新建页⾯标签
iframe2=driver.find_element_by_xpath("//iframe[contains(@src,'/quality-web/certifischeController/input')]") driver.switch_to.frame(iframe2)#新建页嵌套标签
driver.find_element_by_xpath('//*[@id="myform"]/table/tbody/tr[2]/td[8]/span/span/span[1]').click()
sleep(2)
driver.find_element_by_xpath("//*[text()='2020财年当年4⽉']").click()
sleep(2)
driver.find_element_by_xpath('//*[@id="myform"]/table/tbody/tr[3]/td[2]/span/span').click()
sleep(1)
driver.find_element_by_xpath("//*[text()='111']").click()
sleep(1)
#完成时间控件选择
js = "$('.kendoDate').removeAttr('readonly')" # jQuery,移除属性
# js = "$('input:eq(0)').attr('readonly',false)" # jQuery,设置为false
sleep(2)
driver.find_element_by_xpath('//*[@id="myform"]/table/tbody/tr[3]/td[4]/span/span/input').send_keys("2020-06-22") #认证⽇期
driver.find_element_by_xpath('//*[@id="mybody"]/tr/td[7]/span/span/input').send_keys('2020-06-22')
driver.find_element_by_xpath('//*[@id="mybody"]/tr/td[8]/span/span/input').send_keys('2020-06-22')
#⽂本框输⼊
driver.find_element_by_xpath('//*[@data-isq="⼯作项⽬"]').send_keys("您好")
sleep(1)
driver.find_element_by_xpath('//*[@data-isq="详细计划"]').send_keys("您好")
sleep(1)
#
driver.find_element_by_xpath('//*[@data-isq="供应商名称"]').send_keys("您好")
sleep(1)
driver.find_element_by_xpath('//*[@data-isq="制造地址/邮编"]').send_keys("您好")
sleep(1)
driver.find_element_by_xpath('//*[@data-isq="电话/传真"]').send_keys("您好")
sleep(1)
driver.find_element_by_xpath('//*[@data-isq="认证产品"]').send_keys("您好")
sleep(1)
#树形结构
#批准⼈
driver.find_element_by_xpath('//*[@data-isq="计划审核⼈"]').click()
people=driver.find_element_by_xpath('//*[@title="⼈员选择"]')
driver.switch_to.frame(people) #进⼊选⼈ ifame
穿越之全才皇后sleep(2)
driver.find_element_by_id('searchbox').send_keys('b')
sleep(2)
driver.find_element_by_xpath('//*[@id="myeorgrid"]/div[2]/table/tbody/tr[1]/td[2]').click()
sleep(2)
driver.find_element_by_xpath('//*[@id="okButton"]').click()
sleep(2)
#计划批准⼈
driver.switch_to.parent_frame()) #⼈员选择成功后,返回上级弹窗
driver.find_element_by_xpath('//*[@data-isq="计划批准⼈"]').click()
people=driver.find_element_by_xpath('//*[@title="⼈员选择"]')
driver.switch_to.frame(people)#进⼊批准⼈弹窗
sleep(2)
driver.find_element_by_id('searchbox').send_keys('b')
sleep(2)
driver.find_element_by_xpath('//*[@id="myeorgrid"]/div[2]/table/tbody/tr[1]/td[2]').click()
sleep(2)
driver.find_element_by_xpath('//*[@id="okButton"]').click()
sleep(2)
#跳回 frame1
driver.switch_to.parent_frame() 返回上层
driver.switch_to.parent_frame()返回上层
driver.find_element_by_id("buttons2").click()
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div[2]/span[4]/a').click()
driver.switch_to.default_content()#退出标签
5) 时间控件
时间控件正常操作是点击并选择时间
⾃动化 input 标签由于 readonly 属性,所以⽇期控件是不允许输⼊的,那么我们主要通过 js 来删除或者 readonly 制成否,这样可以直接允许输⼊。
js = "$('.kendoDate').removeAttr('readonly')" # jQuery,移除属性
实现功能
js = "$('.kendoDate').removeAttr('readonly')" # jQuery,移除属性
sleep(2)
男士护肤品排行driver.find_element_by_xpath('//*[@id="myform"]/table/tbody/tr[3]/td[4]/span/span/input').send_keys("2020-06-22")#输⼊固定⽇期
#认证⽇期
driver.find_element_by_xpath('//*[@id="mybody"]/tr/td[7]/span/span/input').send_keys('2020-06-22')
driver.find_element_by_xpath('//*[@id="mybody"]/tr/td[8]/span/span/input').send_keys('2020-06-22')
6) 键盘操作
driver.find_element_by_class().send_keys(Keys.CONTROL+'a')
4. 执⾏完操作后关闭浏览器
driver.quit()
带有反义词的成语
⼆、报错处理⽅案
1.pycharm引⼊包报错, 选中模块名称 【右键】-> 【mark directory as 】-> 【sources root】
2.pycharm中如何调节字体⼤⼩位置
菜单栏:file ----> setting —> editor —>font —> size 修改为需要⼤⼩字号例如20,点击ok
1. 消息弹窗 3
打开F12,在source⾥⾯点击暂停脚本执⾏,把元素定住,然后再去写xpath定位
4. 测试报告点击浏览器打开提⽰“系统不到⽂件 chrome”
出现该报错主要是因为你没有进⾏chrome浏览器安装路径的配置,解决⽅法很简单:打开
pycharm–》File–》setting–》Tools–》Web Browsers长春有什么好玩的地方
在Default Browser⼀栏勾选Custom Path(敲⿊板)
然后将chrome的路径改为安装路径即可,如图所⽰:
5.运⾏脚本,提⽰chrome正在受到⾃控软件控制-属于chrome浏览器特有的问题
⾸先查看浏览器版本75版本以下:
option = webdriver.ChromeOptions()
option.add_argument('disable-infobars')
driver = webdriver.Chrome(chrome_options=option)win10激活密钥
url=''
<(url)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论