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)

自动化测试_百度--糯米中--携程-出行<一>的更多相关文章

  1. 商业研究(20):滴滴出行,进军海外包车?与OTA携程和包车创业公司,共演“三国杀”?看看分析师、投资人和权威人士等10个人的观点碰撞

     小雷友情提示:创业有风险,投资需谨慎.      前一篇文章,在探讨境外游创业公司-皇包车和易途8的时候,提到"滴滴如果进军海外包车,为海外华人提供打车和包车服务,有较大可能对海外包车公司 ...

  2. 【原创】请避免GO语言中的携程空跑(CPU突然激增)

    其实GO语言从1.6版本开始非常不错了,GC性能优化非常到位,并且各种并行设计比从新实现一套C++版本的确是方便不少. 语言包也很多,库也相对稳定,完全可以适用于生产环境. 本文主要是给刚刚入门新手注 ...

  3. 携程二面:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术

    前段时间我在准备暑期实习嘛,这是当时面携程的时候二面的一道问题,我一脸懵逼,赶紧道歉,不好意思不知道没了解过,面试官又解释说 redo log,我寻思着 redo log 我知道啊,WAL 是啥?给面 ...

  4. jquery中如何以逗号分割字符串_百度知道

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. 敏捷开发中的sprint是什么意思_百度知道

    敏捷开发中的sprint是什么意思_百度知道     敏捷开发中的sprint是什么意思    未成年RB21 | 浏览 4208 次    推荐于2016-02-27 15:19:02     最佳 ...

  6. 关于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 ...

  7. 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中

    import requests import json import re import csv import threadpool import time, random from bs4 impo ...

  8. 解密国内BAT等大厂前端技术体系-携程篇(长文建议收藏)

    1 引言 为了了解当前前端的发展趋势,让我们从国内各大互联网大厂开始,了解他们的最新动态和未来规划.这是解密大厂前端技术体系的第四篇,前三篇已经讲述了阿里.腾讯.百度在前端技术这几年的技术发展. 这一 ...

  9. python对比线程,进程,携程,异步,哪个快

    目录概念介绍测试环境开始测试测试[单进程单线程]测试[多进程 并行]测试[多线程 并发]测试[协程 + 异步]结果对比绘图展示概念介绍首先简单介绍几个概念: 进程和线程进程就是一个程序在一个数据集上的 ...

随机推荐

  1. CodeForces 754D Fedor and coupons ——(k段线段最大交集)

    还记得lyf说过k=2的方法,但是推广到k是其他的话有点麻烦.现在这里采取另外一种方法. 先将所有线段按照L进行排序,然后优先队列保存R的值,然后每次用最小的R值,和当前的L来维护答案即可.同时,如果 ...

  2. HashMap在什么场景下会由哪些内部方法导致线程不安全,至少给出一种场景

    一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题? HashMap底层是一个Entry数组,当发生hash冲突的时候,ha ...

  3. SpringBoot的文件上传&下载

    前言:不多BB直接上代码 文件上传 pom依赖添加commons-io <!-- 上传/下载jar https://mvnrepository.com/artifact/commons-io/c ...

  4. CentOS7中使用GitBlit搭建自己的Git服务器

    1.搭建依赖库 yum install java yum install git yum install -y gcc-c++ curl-devel expat-devel gettext-devel ...

  5. docker Swarm mode集群

    基本概念 Swarm 是使用 SwarmKit 构建的 Docker 引擎内置(原生)的集群管理和编排工具. 使用 Swarm 集群之前需要了解以下几个概念. 节点 运行 Docker 的主机可以主动 ...

  6. Oracle 11g的日志路径

    Oracle数据库的最常用问题定位日志是alert日志,Oracle数据库的日志文件alert_$ORACLE_SID.log记录了重作日志的转换,数据库启动和关闭,数据库结构的改变,回退段的修改,死 ...

  7. 执行docker run命令时报错Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

    一.解决办法: 修改host 二.步骤如下 2.1 安装dig工具  sudo apt-get install dnsutils -y (ubuntu下的安装方法) 2.2 找到registry-1. ...

  8. MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

    最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...

  9. mysql数据库基本操作sql语言

    mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...

  10. 在oracle中使用基表建立月表的存储过程

    某些系统需要按月分表来保存数据.下面的存储过程演示了如何使用基表来建立每个月的月表. 处理思路是:     1:首先,为基表建立好表和对应的索引.     2:将基表保存到一个存储过程需要的表中.   ...