selenium自动化测试实战基于python_初级java工程师要求

selenium自动化测试实战基于python_初级java工程师要求一、Selenium介绍Selenium是什么?一句话,自动化测试工具。它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里面安装一个Selenium的插件,那么便可以方便地实现Web界面的测试。Selenium2,又名WebDriver,它的主要新功能是集成了Selenium1.0以及WebDriver(WebDr…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、Selenium介绍
Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。
中文文档:http://selenium-python-zh.readthedocs.io/en/latest/index.html
英文文档:http://selenium-python.readthedocs.io/index.html

二、python、pycharm安装
Python官网下载链接:
https://www.python.org/downloads/windows/
pycharm官网下载链接:https://www.jetbrains.com/pycharm/download/#section=windows

三、selenium安装
1)pip install selenium
安装Chrome driver
https://chromedriver.storage.proxy.ustclug.org/index.html?path=2.29/
Chrome浏览器和Chromedriver版本号:

chromedriver版本 支持的Chrome版本
v2.43 v69-71
v2.42 v68-70
v2.41 v67-69
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

2)把chromedriver.exe拷贝到到chrome的安装目录下…\Google\Chrome\Application\ ,同时把chrome的安装目录加入到path环境变量。

四、自动测试实战:12306订票
1.知识点
Selenium定位web元素的方法
浏览器调试工具使用

2.步骤
1) 人工走一遍流程,对自动化的流程心中有数
2) 按步骤拆分,然后对每一个小步骤编写自动化脚本
3) 将所有步骤合起来,多次运行,测试脚本

3.打开12306

#打开网址
driver.get('https://kyfw.12306.cn/otn')
#睡五秒自动选择验证码
time.sleep(5)

4.登录12306
1)在chrome界面,按F12快捷键,弹出chrome的调试工具
2)找出登录按钮的id和username、password的id
根据id定位元素

driver.find_element_by_id("username").click()
driver.find_element_by_id("username").send_keys("5xxxx68397@qq.com")
driver.find_element_by_id("password").send_keys("***")
print("continue")
time.sleep(15)

根据链接的文本来定位元素

driver.find_element_by_link_text("车票预订").click()
time.sleep(5)

在这里插入图片描述

选择出发地
这里写图片描述
**利用js代码冻结浏览器界面。
setTimeout(function(){debugger;}, 5000)
**

#出发地选择
driver.find_element_by_id("fromStationText").click()
# setTimeout(function(){debugger;}, 5000)
driver.find_element_by_css_selector(u"[title=广州]").click()

time.sleep(5)

在这里插入图片描述

右击代码位置,选择copy selector这里写图片描述

在这里插入图片描述

这里写图片描述
选择出发日
这里写图片描述这里写图片描述
选择车次类型:
五、实验分析:
1、不会激活成功教程12306的变态验证码。没有自动激活成功教程验证码,所以留五秒钟自己手动选验证码。
2、因为是学生认证所以多一步需要确认(不是学生可去掉)
3、订票成功

六、总结
自动化测试的优点是能够很快、很广泛地查找缺陷,同时可以做很多重复性的工作,在回归测试阶段,我们可以利用自动化功能测试工具进行,而无须大量的软件测试人员手动的再次执行测试用例,极大的提高了工作效率。
自动化测试的缺点也很明显,它们只能检查一些比较主要的问题,如崩溃、死机,但是却无法发现一些一般的日常错误,这些错误通过人眼很容易找到,但机器却往往找不到。另外,在自动测试中编写测试脚本工作量也很大,有时候该工作量甚至超过了手动测试的时间。
Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是关键。
Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的。但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的。需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这样就能大大地提高元素定位的准确性。

附代码:

#-*-coding:utf8-*-
import time
from selenium import webdriver

#运行chrome,打开浏览器
driver =webdriver.Chrome()
#设置浏览器窗口
driver.set_window_size(1080,800)

#设置全局操作时间
driver.implicitly_wait(10)

#打开网址
driver.get('https://kyfw.12306.cn/otn')

time.sleep(5)

driver.find_element_by_link_text("账号登录").click()
driver.find_element_by_id("J-userName").click()
driver.find_element_by_id("J-userName").send_keys("5xxx68397@qq.com")
driver.find_element_by_id("J-password").send_keys("***")
print("continue")
#睡十五秒自动选择验证码 app扫码登陆
time.sleep(15)

driver.find_element_by_link_text("车票预订").click()
time.sleep(5)
#出发地选择
driver.find_element_by_id("fromStationText").click()
# setTimeout(function(){debugger;}, 5000)
driver.find_element_by_css_selector(u"[title=广州]").click()

time.sleep(5)
#目的地选择
driver.find_element_by_id("toStationText").click()
driver.find_element_by_css_selector(u"[title=北京]").click()
time.sleep(5)

#出发日期选择
driver.find_element_by_id("train_date").click()
driver.find_element_by_css_selector("body > div.cal-wrap > div:nth-child(1) > div.cal-cm > div:nth-child(24) > div").click()
time.sleep(5)

#车型选择
driver.find_element_by_css_selector("#_ul_station_train_code > li:nth-child(1) > label").click()
time.sleep(5)

while True:
    try:
        driver.find_element_by_id("query_ticket").click()
        e=driver.find_element_by_id("SWZ_6i00000G720F")
        e.click()
        if e.text in [u'无','--']:
            print ("nono")
            time.sleep(1)
        else:
            print("yes")
            # 购票
            driver.find_element_by_link_text("预订").click()
            # 乘车人选择
            driver.find_element_by_css_selector("#normal_passenger_id > li:nth-child(1) > label").click()
            # 学生票确认(不是学生可去掉)
            driver.find_element_by_link_text("确认").click()
            # 提交订单
            driver.find_element_by_link_text("提交订单").click()
            driver.find_element_by_link_text("确认").click()
    except:
        pass
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186003.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • elemtype到底是个啥?

    elemtype到底是个啥?以前对这个东西的一知半解,今天有时间,查了多方面的资料,总结下:ElemType简单来说就是:用来更好的替代,他也可以叫做别的名字,比如说:#defineElemTypeint写程序,就可以用ElemType来进行替代int,若以后想要改Elemtype所定义的数据类型为char,直接#defineElemTypechar只要是其涉及到的全部修改了数据类型,可以修改最少量的代码,…

  • 用matlab绘制函数图像例题_matlab绘制方程组图像

    用matlab绘制函数图像例题_matlab绘制方程组图像1.一元函数比如f(x)=x+10sin(5x)+7cos(4x)%%%%%%%%%f(x)=x+10sin(5x)+7cos(4x)%%%%%%%%%%clearall;%清除所有变量closeall;%清图clc;%清屏x=0:0.01:10;y=x+10*sin(5*x)…

  • 如何用串口助手测试软件485通讯功能,串口调试助手如何检测RS485端口好坏及信号发送的好坏?…

    如何用串口助手测试软件485通讯功能,串口调试助手如何检测RS485端口好坏及信号发送的好坏?…串口是用来通信的,如果能正常通信,串口当然就是好的!所以,最可靠的方法就是建立一个串口通信环境。当然,也有简单的方法,那就是短接串口的2、3两针,这样就形成一个自发自收的环境,再用串口调试助手发送数据,如果有数据回显,大致说明串口通信功能正常!当然,标准串口信号很多,最可靠的方法还是建立一个串口通信环境。拓展:1、串口调试助手是串口调试相关工具,有多个版本。如:友善串口调试助手,支持960…

  • 数组与集合相互转换的方法_字符串数组转集合list

    数组与集合相互转换的方法_字符串数组转集合list数组Array与集合List相互转化有两种方式,一种是自己手动转化,一种是直接使用集合或数组自带的方法转化数组转化集合:方法一:手动转化List<String>list=newArrayList<>();String[]array=newString[]{“hello”,”hi”,”nihao”};for(inti=0;i<array.length;i++){list.add(array[i]);}方法二:使用集合

  • QMap与QHash

    QMap与QHash转载:http://newfaction.net/2010/11/17/qt-qhash-and-qmap-difference.html关联容器可以保存任意多个具有相同类型的项,且它们由一个键索引。Qt提供两个主要的关联容器类:QMap&lt;K,T&gt;和QHash&lt;K,T&gt;。     QMap&lt;K,T&gt;是一个以升序键顺序存储键值对的数据结构…

  • car 承诺访问速率committed access rate

    car 承诺访问速率committed access rate

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号