DAY04 UI自动化测试

今日任务

  1. 下拉选择框、弹出框、滚动条操作
  2. frame框架、多窗口切换
  3. 窗口截图、验证码处理

Q1:下拉框

from time import sleep

from selenium import webdriver
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()

driver.get('')
# 需求:使用‘注册A.html’页面,完成对城市的下拉框的操作
# 0.定位下拉框元素(如何获取下拉框元素? 页面--检查-粘贴复制 )
sel = driver.find_element_by_id('selectA')
# 1.实例化下拉框选择对象
se = Select(sel)
# 1)选择‘广州’
# 通过索引选择目标元素
se.select_by_index(2)
sleep(3)
# 2)暂停2秒,选择‘上海’
# 通过value属性值选择目标
se.select_by_value('')
sleep(3)

# 3)暂停2秒,选择‘北京’
# 通过可见文本信息选择目标元素
se.select_by_visible_text('')
sleep(3)
#注意
# 

sleep(3)

driver.quit()

Q2:   弹出框

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('')
# 需求:打开注册A.html页面,完成以下操作:
# 1)点击alert按钮
# 凡是通过JS实现的系统弹窗,无法通过鼠标右键检查选项获取元素信息!!!
driver.find_element_by_id('').click()

# 2)关闭警告框
# 1.切换到弹窗 :只要是系统弹窗,无论哪一种,处理方法都是以下的步骤!!!
alert = driver.switch_to.alert
# 2.获取弹窗信息:获取弹窗信息必须在处理弹窗操作之前
print('弹窗信息是:',alert.text)
sleep(3)
# 3.去除弹窗
alert.accept()

# 3)输入用户名:admin
driver.find_element_by_id('userA').send_keys('admin')



sleep(3)

driver.quit()

Q3:滚动条

from time import sleep

from selenium import webdriver 

driver = webdriver.Chrome()

driver.get('')
# 需求:打开注册页面A,暂停2秒后,滚动条拉到最底层,暂停2秒后,恢复原位置
sleep(2)
# 1)准备JS代码:1000只是一个尽可能大的值,不是准确值
js_down = "window.scrollTo(0,1000)"
# 2)执行JS代码
driver.execute_script(js_down)



sleep(3)


driver.quit()

Q4:  frame处理

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('')

"""
需求:打开‘注册实例.html’页面,完成以下操作
1)填写主页面的注册信息
2)填写注册页面A中的注册信息
3)填写注册页面B中的注册信息
"""

# 1)填写主页面的注册信息
driver.find_element_by_id('userA').send_keys('admin1')
driver.find_element_by_id('passwordA').send_keys('123456')

# 2)填写注册页面A中的注册信息
driver.switch_to.frame('')
driver.find_element_by_id('userA').send_keys('')
driver.find_element_by_id('passwordA').send_keys('123456')

# 3)填写注册页面B中的注册信息

sleep(3)

driver.quit()

Q5:  frame切换

1、基础代码


from time import sleep

from selenium import webdriver 

driver = webdriver.Chrome()

driver.get('')
"""
需求:打开‘注册实例.html’页面,完成以下操作
1)填写主页面的注册信息
2)填写注册页面A中的注册信息
3)填写注册页面B中的注册信息
"""

# 1)填写主页面的注册信息
driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('123456')

# 2)填写注册页面A中的注册信息
driver.switch_to.frame('')
driver.find_element_by_id('userA').send_keys('admin1')
driver.find_element_by_id('passwordA').send_keys('123456')

# 切换frame




# 3)填写注册页面B中的注册信息
driver.find_element_by_id('userB').send_keys('admin2')
driver.find_element_by_id('passwordB').send_keys('123456')


sleep(3)

driver.quit()

2、退出后再切换(类比:客厅---主卧---次卧,如果要实现从主卧到次卧,首先是先到客厅,然后到次卧)


from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('')
"""
需求:打开‘注册实例.html’页面,完成以下操作
1)填写主页面的注册信息
2)填写注册页面A中的注册信息
3)填写注册页面B中的注册信息
"""

# 1)填写主页面的注册信息
driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('123456')

# 2)填写注册页面A中的注册信息
driver.switch_to.frame('')
driver.find_element_by_id('userA').send_keys('admin1')
driver.find_element_by_id('passwordA').send_keys('123456')

# 切换回默认页面:如果连续切换多个frame,必须先回到默认页面,才能实现切换下一个frame
driver.switch_to.default_content()


# 切换frame
driver.switch_to.frame('myframe2')


# 3)填写注册页面B中的注册信息
driver.find_element_by_id('userB').send_keys('admin2')
driver.find_element_by_id('passwordB').send_keys('123456')


sleep(3)

driver.quit()

Q6:多窗口处理

1、查看当前窗口

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('')

# 1)点击‘注册A页面’链接
driver.find_element_by_id('ZCA').click()

# 查看当前窗口的句柄值
# 在浏览器一个声明周期内,任何一个窗口都有唯一的句柄值,可以通过句柄值完成窗口切换操作
print('当前句柄值为:', driver.current_window_handle)

# 2)打开的页面中,填写注册信息
driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('123456')


sleep(3)

driver.quit()

2、切换窗口操作

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('')

# 1)点击‘注册A页面’链接
driver.find_element_by_id('ZCA').click()

# 查看当前窗口的句柄值
# 在浏览器一个声明周期内,任何一个窗口都有唯一的句柄值,可以通过句柄值完成窗口切换操作
print('当前句柄值为:', driver.current_window_handle)

# 切换窗口操作
# 1)获取所含有窗口句柄(包含新窗口)
handles = driver.window_handles
print(handles)
print(type(handles))

# 2)切换窗口:列表的-1 索引对应的值,始终是最新窗口的句柄值
driver.switch_to.window(handles[-1])


# 2)打开的页面中,填写注册信息
driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('123456')


sleep(3)

driver.quit()

Q7:截图操作


from time import sleep

from selenium import webdriver 

driver = webdriver.Chrome()

driver.get('')

driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('1223456')

# 截图保存:默认推荐使用 .png格式
driver.get_screenshot_as_file('./info.png')

# 指定图片文件存放路径:需要先手动创建文件夹
driver.get_screenshot_as_file('./image/info.png')


sleep(3)

driver.quit()

Q8:截图操作-利用时间戳防止图片重名覆盖


from time import sleep,strftime

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('')

driver.find_element_by_id('userA').send_keys('admin')
driver.find_element_by_id('passwordA').send_keys('1223456')

# 截图保存:默认推荐使用 .png格式
# driver.get_screenshot_as_file('./info.png')

# 说明:Windows系统文件名不支持特殊符号,尽量只是用下划线
now_time = strftime('%Y%m%d_%H%M%S')
driver.get_screenshot_as_file('./info_{}.png'.format(now_time))



# 指定图片文件存放路径:需要先手动创建文件夹
# driver.get_screenshot_as_file('./image/info.png')


sleep(3)

driver.quit()

Q9:验证码处理

1、 cookie绕过登录
"""""
# uiautoday04 - 当前项目的名称;
# hm11_auto_login_baidu - 在文件创建过程中,在对话框中输入的新文件名称;
# HP - 当前用户的登录名;
# 2023/12/18 - 当前的系统日期;
# 19:16 - 当前系统时间;

"""""
from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
driver.maximize_window()

# cookie绕过登录
# 1.整理关键cookie信息为字典数据
cookie_value = {'name':'BDUSS',
                'value':'hYbktqdjZZNlNEbFlTdFNrRGdLUkN3TVM5SXpJOUUwNE9KNzFnLUYyZmp0YWRsSVFBQUFBJCQAAAAAAAAAAAEAAADBMuG5tqHIutLlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMogGXjKIBlRG'}
# 调用方法添加cookie信息
driver.add_cookie(cookie_value)

# 刷新页面-->发送cookie信息给服务器进行验证!
driver.refresh()

sleep(3)

# driver.quit()
2、对比分析
"""""
# uiautoday04 - 当前项目的名称;
# hm12_cookie_other - 在文件创建过程中,在对话框中输入的新文件名称;
# HP - 当前用户的登录名;
# 2023/12/18 - 当前的系统日期;
# 19:38 - 当前系统时间;

"""""
from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')
driver.maximize_window()

# 获取所有cookie信息
print(driver.get_cookies())

# 获取特定cookie信息 :需要传入name
driver.get_cookie('BDUSS')


sleep(3)

driver.quit()

今日总结

  • 整理今日内容
  • 灵活运用今日方法
  • 预习Pytest框架&数据驱动&PO模式

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值