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

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

前言

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

图片描述


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

执行流程

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


图片描述


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


图片描述


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

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


图片描述

Python代码部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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()))

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

图片描述


图片描述


图片描述


图片描述

结语

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


撒花撒花???~

点个赞再走呗~


Python自动化测试之途牛网机票查询二(完结)
https://blog.funkt.cn/2020/07/26/1287350200733573120/
作者
anjiemo
发布于
2020年7月26日
许可协议
未经作者授权,禁止转载