自动化测试_百度--糯米中--携程-出行<一>
1:接下来我们看看思路 和相应的功能
使用python+selenium+unittest完成测试脚本
打开chrome浏览器,窗口最大化,设置等待时间10s
打开百度首页
鼠标移动到更多产品,点击糯米
点击火车票
始发站选择北京,终点站选择上海
时间选择明天
截屏搜素结果页面
测试结果写入html文件
- ActionChains是自动执行低级交互的一种方式,例如:鼠标移动,鼠标点按,键盘操作,文本操作等。
- click(element=null) 点击元素,参数为空时,鼠标在当前位置点击
- send_keys(keys_to_send) 向文本框发送文字、按键
- move_to_element(element) 鼠标悬浮在某元素上
- perform() 执行所有存储在ActionChains中的动作
首先来看如何引入这个包
- from selenium.webdriver.common.action_chains import ActionChains
当然,我们还要引入wedbriver的包,用来启动浏览器
- from selenium import webdriver
- # -*- coding: utf-8 -*-
- # __author__ = "Allen"
- import requests
- import unittest
- import HTMLTestRunner
- import time
- from selenium import webdriver
- from selenium.webdriver.common.action_chains import ActionChains
- from selenium.webdriver.common.keys import Keys
- class Baidu(unittest.TestCase):
- def setUp(self):
- self.driver = webdriver.Chrome()
- self.driver.implicitly_wait(10)
- self.driver.maximize_window()
- def tearDown(self):
- time.sleep(3)
- self.driver.quit()
- def test_login(self):
- self.driver.get('https://www.baidu.com/')
- gd = self.driver.find_element_by_link_text('更多产品')
- # 鼠标滑动到 更多产品 控件上
- ac = ActionChains(self.driver)
- ac.move_to_element(gd).perform()
- time.sleep(3)
- self.driver.find_element_by_link_text('糯米').click()
- # 获取当前打开的所有网页的标识
- pag = self.driver.window_handles
- # 切换到最新打开的网页 X上出行
- self.driver.switch_to_window(pag[-1])
- chux = self.driver.find_element_by_xpath('//*[@id="j-catg"]/li[4]/div')
- # 鼠标滑动到 出行 控件上
- ac = ActionChains(self.driver)
- ac.move_to_element(chux).perform()
- self.driver.find_element_by_xpath('//*[@id="j-catg"]/li[4]/ul/li[2]/a/div').click()
- # 获取当前 (target="_blank") 新 打开的所有网页的标识
- pag = self.driver.window_handles
- # 切换到最新打开的网页 X上出行
- self.driver.switch_to_window(pag[-1])
- # 清空输入框中内容
- self.driver.find_element_by_id('notice01').send_keys('北京')
- time.sleep(3)
- self.driver.find_element_by_id('notice08').send_keys('杭州')
- time.sleep(3)
- # 执行js语句,删除时间输入框的readonly属性
- js = 'document.getElementById("dateObj").removeAttribute("readonly")'
- self.driver.execute_script(js)
- self.driver.find_element_by_id('dateObj').clear()
- self.driver.find_element_by_id('dateObj').send_keys('2019-10-01')
- time.sleep(3)
- self.driver.find_element_by_xpath('//*[@id="searchtype"]/li[1]').click()
- self.driver.find_element_by_id('searchbtn').click()
- time.sleep(3)
- # 截屏
- self.driver.save_screenshot(r'223.png')
- # 断言判断北京在不在网页标题中
- self.assertIn('北京',self.driver.title)
- file = r'测试考试\aa.html'
- # file1 = r'测试考试\aa.txt'
- if __name__ == '__main__':
- suit = unittest.TestSuite()
- suit.addTests(unittest.TestLoader().loadTestsFromName('day17'))
- with open(file,'wb')as f:
- runner = HTMLTestRunner.HTMLTestRunner(f,verbosity=2)
- runner.run(suit)
自动化测试_百度--糯米中--携程-出行<一>的更多相关文章
- 商业研究(20):滴滴出行,进军海外包车?与OTA携程和包车创业公司,共演“三国杀”?看看分析师、投资人和权威人士等10个人的观点碰撞
小雷友情提示:创业有风险,投资需谨慎. 前一篇文章,在探讨境外游创业公司-皇包车和易途8的时候,提到"滴滴如果进军海外包车,为海外华人提供打车和包车服务,有较大可能对海外包车公司 ...
- 【原创】请避免GO语言中的携程空跑(CPU突然激增)
其实GO语言从1.6版本开始非常不错了,GC性能优化非常到位,并且各种并行设计比从新实现一套C++版本的确是方便不少. 语言包也很多,库也相对稳定,完全可以适用于生产环境. 本文主要是给刚刚入门新手注 ...
- 携程二面:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术
前段时间我在准备暑期实习嘛,这是当时面携程的时候二面的一道问题,我一脸懵逼,赶紧道歉,不好意思不知道没了解过,面试官又解释说 redo log,我寻思着 redo log 我知道啊,WAL 是啥?给面 ...
- jquery中如何以逗号分割字符串_百度知道
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 敏捷开发中的sprint是什么意思_百度知道
敏捷开发中的sprint是什么意思_百度知道 敏捷开发中的sprint是什么意思 未成年RB21 | 浏览 4208 次 推荐于2016-02-27 15:19:02 最佳 ...
- 关于HTML表格中插入背景图片的问题_百度知道 3个回答 - 提问时间: 2009年03月23日 最佳答案: <tr style="background-image:url(1.jpg)"> (这事设置背景图片) <img src="images/bbs_student1.gif" />如果是这样的就是直接插入图片。你看看,...
关于HTML表格中插入背景图片的问题_百度知道 3个回答 - 提问时间: 2009年03月23日 最佳答案: <tr style="background-image:url(1.jpg ...
- 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中
import requests import json import re import csv import threadpool import time, random from bs4 impo ...
- 解密国内BAT等大厂前端技术体系-携程篇(长文建议收藏)
1 引言 为了了解当前前端的发展趋势,让我们从国内各大互联网大厂开始,了解他们的最新动态和未来规划.这是解密大厂前端技术体系的第四篇,前三篇已经讲述了阿里.腾讯.百度在前端技术这几年的技术发展. 这一 ...
- python对比线程,进程,携程,异步,哪个快
目录概念介绍测试环境开始测试测试[单进程单线程]测试[多进程 并行]测试[多线程 并发]测试[协程 + 异步]结果对比绘图展示概念介绍首先简单介绍几个概念: 进程和线程进程就是一个程序在一个数据集上的 ...
随机推荐
- ACM之路(19)—— 主席树初探
长春赛的 I 题是主席树,现在稍微的学了一点主席树,也就算入了个门吧= = 简单的来说主席树就是每个节点上面都是一棵线段树,但是这么多线段树会MLE吧?其实我们解决的办法就是有重复的节点给他利用起来, ...
- webservice代码编写主要包括服务器端发布和客户端调用。
一.java工程发布,java工程调用 (一).服务器端的编写 1.在eclipse里新建java project工程,创建功能类,通过关键字@webservice(name="newI ...
- TCP最大报文段长度MSS
最大报文段长度(MSS)表示TCP传往另一端的最大数据库的长度.当一个连接建立时,连接的双方都要通告各自需要接收的MSS选项(MSS选项只能出现在SYN报文段中).如果一方不接收来自另一方的MSS值, ...
- java拦截器获取请求完整参数
public class OptLogAspect implements HandlerInterceptor { @Override public boolean preHandle(HttpSer ...
- SRS之RTMP连接处理线程conn:接收客户端推流
由 SRS之RTMP的TCP线程 分析可知,SRS 接受客户端的连接后创建了一个线程:conn,用于处理与客户端的 RTMP 连接. 本文的分析是基于该配置文件的: listen 1935; max_ ...
- SQL optimizer -Query Optimizer Deep Dive
refer: http://sqlblog.com/blogs/paul_white/archive/2012/04/28/query-optimizer-deep-dive-part-1.aspx ...
- python中列表的简单用法
1.定义list >>> li = ["a", "b", "mpilgrim", "z", " ...
- python函数(一)
今天记一下学到的python函数相关知识. 目录: 1.函数简介 2.函数定义 3.函数参数 第一部分:函数简介 我们在编程过程中往往会碰到这样的事情-----很多地方都用到了相同的一段代码.虽 ...
- Android应用开发编译框架流程与IDE及Gradle概要
1 背景 建议阅读本文之前先阅读<Android Studio入门到精通>和<Groovy脚本基础全攻略>及<Gradle脚本基础全攻略>三篇博客作为背景知识,这样 ...
- 自定义有焦点的TextView实现广告信息左右一直滚动的跑马灯效果
import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; imp ...