0
Python自动化测试之途牛网机票查询二(完结)
A lonely cat 发表于 2020-07-26 19:40 141

Python自动化测试之途牛网机票查询二(完结)

前言

在做自动化测试时,有时候我们还需要模拟鼠标和键盘操作,因为有些元素只能鼠标移动或悬浮时才会展示出来,这时就无法直接操作元素了,如下图所示。

图片描述

这次我们还是以途牛网为例子进行测试。

执行流程

在国际机票的搜索中,在输入框中输入内容,输入框下方会弹出一个城市列表控件,如图。

图片描述

需要模拟键盘操作,点击下箭头,点击回车来选择城市或机场,输入内容和城市选择可任意,国内机票应都是国内城市,国际机票应至少有一个国际或港澳台城市。

图片描述

点击单程和往返按钮,输入出发和到达城市,点击成人的下拉框,通过模拟键盘向下和回车选择 1 人,然后点击搜索。需要考虑交换出发,到达城市按钮,不需要考虑日期,舱位和儿童婴儿票。

出现广告遮挡按钮时,用脚本点击左上方关闭按钮。

图片描述

Python代码部分

from selenium import webdriver
# 提供鼠标事件的ActionChains
from selenium.webdriver.common.action_chains import ActionChains
# 提供键盘事件的Keys
from selenium.webdriver.common.keys import Keys
from time import sleep
import time

print("开始时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
url = "https://www.tuniu.com/"
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(20)
sleep(5)
airTicketsMenu = driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[1]/div/div/ul/li[6]/a')
# 在机票菜单上悬停
ActionChains(driver).move_to_element(airTicketsMenu).perform()
sleep(2)
# 点击出境 · 中国港澳台
driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[1]/div/div/ul/li[6]/div/div/a[2]').click()
sleep(5)
# 关闭广告
driver.find_element_by_xpath('/html/body/div[2]/div[5]/div/img[2]').click()
driver.find_element_by_xpath('/html/body/div[2]/div[6]/div/img[2]').click()
sleep(3)
# 点击单程按钮
driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/div/div[1]/div[2]/div[2]/div/span[1]/span').click()
sleep(3)
# 点击往返按钮
driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/div/div[1]/div[2]/div[2]/div/span[2]/span').click()
sleep(3)
# 选择出发地
startAddress = driver.find_element_by_xpath(
    '/html/body/div[2]/div[4]/div/div/div[1]/div[3]/div[1]/div[2]/span/input')
# 清空输入框
startAddress.clear()
startAddress.send_keys("南")
sleep(2)
# 模拟按下 向下键
startAddress.send_keys(Keys.DOWN)
sleep(2)
# 模拟按下 向上键
startAddress.send_keys(Keys.UP)
sleep(2)
# 模拟按下 回车键
startAddress.send_keys(Keys.ENTER)
# 选择目的地
endAddress = driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/div/div[1]/div[3]/div[4]/div[2]/span/input')
# 清空输入框
endAddress.clear()
endAddress.send_keys("美国")
sleep(2)
endAddress.send_keys(Keys.DOWN)
sleep(2)
endAddress.send_keys(Keys.UP)
sleep(2)
endAddress.send_keys(Keys.ENTER)
sleep(3)
driver.find_element_by_id("changeCity").click()
# 人数选择
peopleSelected = driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/div/div[1]/div[5]/div[1]/div[2]/span/select')
peopleSelected.click()
sleep(2)
peopleSelected.send_keys(Keys.DOWN)
sleep(2)
peopleSelected.send_keys(Keys.DOWN)
sleep(2)
peopleSelected.send_keys(Keys.UP)
sleep(2)
peopleSelected.send_keys(Keys.UP)
sleep(2)
peopleSelected.send_keys(Keys.ENTER)
# 搜索机票
driver.find_element_by_id("searchIntl").click()
print("国际机票搜索完毕!")
print("结束时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

以下是代码执行的部分截图

图片描述

图片描述

图片描述

图片描述

结语

自动化测试文章到此就结束啦(还有部分内容没讲到,比如验证码识别,同学们自己去网上搜索啦),感谢大家的阅读。

撒花撒花🎉🎉🎉~

点个赞再走呗~

评论
0/240
  • 断点-含光君
    很骚~
    2020-07-26 20:31  回复
    1139423796017500160
    • 拉大锯
      有张图片显示不了。
      2020-07-26 19:51  回复
      1153952789488054272
    • 拉大锯
      继续小母牛
      2020-07-26 19:51  回复
      1153952789488054272
      文章目录