做时间的朋友😭
Python + Selenium自动化测试练习

Python + Selenium自动化测试练习
实现的功能

1.登录
2.将未读信息标记为已读
3.将未处理的任务全部通过

main.py

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
from time import sleep
from selenium.webdriver.common.by import By
import defaultFunction
import autoMarkMsg
import autoPassTask

# 设置隐性等待时间(最大等待时间10s)
defaultFunction.driver.implicitly_wait(10)
defaultFunction.driver.get(defaultFunction.url)
# 利用Tab键和Enter键实现登录
# DefaultFunction.driver.find_element(By.CSS_SELECTOR, '.login-form input[data-v-5f194660]').send_keys(user, Keys.TAB, password, Keys.ENTER)

# 利用XPath定位实现登录
defaultFunction.driver.find_element(By.XPATH, '//*[@placeholder="请输入手机号"]').send_keys(defaultFunction.user)
defaultFunction.driver.find_element(By.XPATH, '//*[@placeholder="请输入密码"]').send_keys(defaultFunction.password)
defaultFunction.driver.find_element(By.XPATH, '//*[@type="button"]').click()

# 标记未读消息
sleep(2)
num_str = autoMarkMsg.autoMark(defaultFunction.driver)
print(num_str)

# # 通过未处理的任务
pass_num_task = autoPassTask.passTask(defaultFunction.driver)
print(pass_num_task)

# 等待10秒后退出浏览器
sleep(10)
defaultFunction.driver.quit()

defaultFunction.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from selenium import webdriver
from selenium.webdriver.common.by import By

user = '13280xxxxxxx'
password = 'xxxxx'
# 开发环境
# url = 'http://58.56.xxxxxxxxx/#/login'
# 生产环境
url = 'http://59.46.xxxxxxxxxx/#/login'
driver = webdriver.Chrome()


# 定义一个函数判断是否存在某个值
def isElementExist(s):
""""判断是否存在某个值"""
try:
driver.find_element(By.XPATH, s)
return True
except Exception as e:
e
return False

autoPassTask.py

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
from time import sleep

# 需要引入ActionChains类,里面有鼠标调用的方法
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

import defaultFunction


def passTask(driver):
"""处理未通过的任务"""
# 循环
pass_num_task = '当前无未处理任务'
if defaultFunction.isElementExist('//div[2]/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[2]/div'):
for m in range(100):
# 双击打开消息
element = driver.find_element(By.XPATH, '//div[2]/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[2]/div')
# 需要睡眠
sleep(1)
ActionChains(driver).double_click(element).perform()
sleep(1)
# 循环检查打开的流程中是否还存在相关元素
for n in range(3):
# 调用判断函数
is_exist = defaultFunction.isElementExist('//form[2]/div[1]/div/label[2]')
sleep(1)
# 如果存在消息按钮就执行
if is_exist:
sleep(1)
# 选中通过消息按钮
driver.find_element(By.XPATH, '//form[2]/div[1]/div/label[2]').click()
sleep(1)
# 点击提交
driver.find_element(By.XPATH, '//div[2]/form[2]/div[3]/div/button[1]/span').click()
sleep(1)
# 确认提交
driver.find_element(By.XPATH, '//div/div[3]/button[2]/span').click()
sleep(1)
# 如果已经没有该元素,则提前跳出循环,进入下一步
else:
break
# 循环的速度很快,如果不加等待时间容易获取不到元素报错
sleep(1)
# 循环的速度很快,如果不加等待时间容易获取不到元素报错
sleep(1)
# 点击返回按钮
driver.find_element(By.XPATH, '//div[2]/div[1]/button').click()
pass_num_task = f'已处理通过{m + 1}条任务'
sleep(5)
return pass_num_task

autoMarkMsg.py

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
from time import sleep

from selenium.webdriver.common.by import By

import defaultFunction


def autoMark(driver):
"""标记未读消息函数"""
# 判断如果有未读消息就标记未读消息两条
num_str = '当前无未读消息'
if defaultFunction.isElementExist('//div[3]/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div/label/span/span'):
# 循环
for n in range(10000):
if defaultFunction.isElementExist(
'//div[3]/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div/label/span/span'):
sleep(1)
# 选中消息
driver.find_element(By.XPATH,
'//div[3]/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div/label/span/span').click()
sleep(1)
# 点击已读按钮
driver.find_element(By.XPATH, '//div[2]/div/div[1]/div[3]/div[1]/div/button[1]/span').click()
sleep(1)
# 确定按钮
driver.find_element(By.XPATH, '//div[3]/div/div[3]/button[2]/span').click()
# 循环的速度很快,如果不加等待时间容易获取不到元素报错
sleep(1)
else:
break
num_str = f'已经标为已读{n + 1}条'
sleep(5)
return num_str
Python Selenium 自动化测试
软件测试面试题目
随便记记03
© 2022 Sk8erBoi
Powered by hexo | Theme is blank
Title - Artist
0:00