2021-01-13

作者:桃子df 

本文以一个页面例子说明运行自动化脚本需要哪些步骤及实现过程中的报错汇总

具体实现功能:

登录操作

进入三级菜单

新建页面输入文本框值,输入时间,进入iframe,点击提交按钮

一 自动化实现步骤

首先需要导入模块名

有些功能selenium框架已经封装好了,只需要我们直接调用就好

常用的导入功能

from selenium import webdriver  #导入webdriver驱动

from time import sleep  #导入sleep函数

from selenium.webdriver.common.action_chains import ActionChains  #导入ActionChains 函数

from selenium.webdriver.support.select import Select#导入select函数

webdriver驱动:通过webdriver驱动来调用浏览器

sleep函数:正常网页加载过程中,如果不通过时间等待再点击元素是无法定位到元素,从而报错,sleep函数是自动化过程中经常用到的功能

ActionChains 函数:ActionChains 是模拟鼠标事件的函数

启动浏览器

所有的自动化操作都是基于页面打开的前提下,所以我们的首要步骤显示要启动浏览器。

在Selenium 中可以启动任何浏览器,前提是需要下载相应的浏览器驱动

这里以chrom浏览器为例

代码实现:

chrome_options = webdriver.ChromeOptions()

chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])

driver = webdriver.Chrome(options=chrome_options)

driver.get("http://127.0.0.1:8080/portal-web/framework/login?")

driver.maximize_window()

功能实现

3.1 元素定位

刚接触自动化的同学可能都被元素定位搞的晕头转向

元素定位有八大方式(id、tagname、class、xpath等等),到底使用哪一种呢

所有的元素定位方式我都用到了,还是不能定位到元素这到底是什么原因呢

刚开始我也是这样,经过一段时间的摸索发现原来是这样~~

元素定位-id,id是唯一,通过id可定位任何元素

元素定位-xpath定位:其他定位方式都不会,只要会xpath就能搞定定位问题

定位不到:考虑时间、窗体、ifame等因素

3.2 元素方法

click()-单击(最常用)

driver.find_element_by_id('dlu').click()

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()#点击登录按钮

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)

iframe 标签,这块属于自动化的重点及难点

driver.switch_to.frame('data_iframe')#进入标签

driver.switch_to.parent_frame() #跳回到上层标签

driver.switch_to.default_content()#退出标签

实现功能:三个iframe间切换操作

时间控件

时间控件正常操作是点击并选择时间

自动化input标签由于readonly 属性,所以日期控件是不允许输入的,那么我们主要通过js来删除或者readonly制成否,这样可以直接允许输入。

js = "$('.kendoDate').removeAttr('readonly')"  # jQuery,移除属性

driver.execute_script(js) #执行js脚本

实现功能

js = "$('.kendoDate').removeAttr('readonly')"  # jQuery,移除属性

driver.execute_script(js)

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')

执行完操作后关闭浏览器

driver.quit()

二 报错处理方案

pycharm 引入包报错,选中模块名称【右键】->【mark directory as 】->【sources root】

图片: https://uploader.shimo.im/f/D7sNMzDamhfHgqfK.png

pycharm 中如何调节字体大小位置

菜单栏:file ----> setting —> editor —>font —> size 修改为需要大小字号例如20,点击ok

消息弹窗3秒消失,无法定位弹窗元素

图片: https://uploader.shimo.im/f/RxYyHIxSuUIx2CqF.png

打开F12,在source里面点击暂停脚本执行,把元素定住,然后再去写xpath定位

测试报告点击浏览器打开提示“系统找不到文件chrome

出现该报错主要是因为你没有进行chrome浏览器安装路径的配置,解决方法很简单:

打开pycharm–》File–》setting–》Tools–》Web Browsers

在Default Browser一栏勾选Custom Path(敲黑板)

然后将chrome的路径改为安装路径即可,如图所示:

图片: https://uploader.shimo.im/f/6aOlR1ChJEHFMelE.png

运行脚本,提示chrome正在受到自控软件控制-属于chrome浏览器特有的问题

首先查看浏览器版本  75版本以下 :

option = webdriver.ChromeOptions()

option.add_argument('disable-infobars')

driver = webdriver.Chrome(chrome_options=option)

url=''

driver.get(url)

————————————————

75版以上

chrome_options = webdriver.ChromeOptions();

chrome_options.add_experimental_option("excludeSwitches", ['enable-automation']);

driver = webdriver.Chrome(options=chrome_options);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 参考链接: web自动化测试教案:http://www.cnblogs.com/zidonghua/p/74300...
    永杰gg阅读 1,038评论 0 0
  • [TOC] 简介 Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就...
    Whyn阅读 1,040评论 0 2
  • 一、自动化测试所属分类(站在代码可见度角度分类) 1. 黑盒测试(功能测试)2. 灰盒测试(接口测试)3. 白盒测...
    MAVIS_42bf阅读 888评论 0 0
  • 完善融宝UI自动化框架 继续总结自动化测试API "29.模拟键盘单个按键/组合按键操作," # import t...
    公子小白123阅读 1,042评论 0 1
  • 非本人编写 原文:https://www.cnblogs.com/jcshuaiashuai/p/10372616...
    小巷_4eda阅读 330评论 0 0