Selenium+Python3的web自动化测试(四)
本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/
感谢上方大佬!
所整理的正文如下:
首先,在搭建好Selenium+Python3的环境基础上,测试要点如下:
1.捕捉鼠标移动到元素上才显示的内容信息,如百度首页的右上角,有个 更多产品 选项,如下图所示
鼠标移动到元素上会显示隐藏的内容,完成这步的操作如下
1 #selenium提供的ActionChains类包含了许多鼠标操作如右键点击,双击,移动到某元素,拖拽等
2
3 from selenium import webdriver
4 from selenium.webdriver.common.action_chains import ActionChains
5
6 driver = webdriver.Firefox()
7 driver.implicitly_wait(0.5)
8
9 driver.get('https://www.baidu.com/')
10
11 ac = ActionChains(driver)
12
13 # 鼠标移动到 元素上
14 ac.move_to_element(driver.find_element_by_css_selector('[name="tj_briicon"]')).perform()
但当鼠标移开时,这个栏就消失了,无法定位栏内的元素的属性,解决的方法是
在页面按下F12之后,在console(或者是控制台)里执行如下JS代码,回车执行(或者是ctrl+回车),5s倒计时内立即将鼠标移到“更多产品”位置,5s后,界面会被冻结,然后此时就可以在开发者工具中找到隐藏内容的属性信息了
1 #窗口冻结代码,即debugger命令
2 setTimeout(function(){debugger},5000)
2.对页面内弹窗内容的操作(测试网页http://f.python3.vip/webauto/test4.html)
- 弹出的对话框有三种类型,分别是 Alert(警告信息)、confirm(确认信息)和prompt(提示输入)(注意:如果不去点击它,页面的其它元素是不能操作的。)
- Alert 弹出框,目的就是显示通知信息,只需用户看完信息后,点击 OK(确定) 就可以了。
- Confirm弹出框,主要是让用户确认是否要进行某个操作。
- Prompt 弹出框 ,是需要用户输入一些信息,提交上去。
1 """Alert的操作"""
2 from selenium import webdriver
3 driver = webdriver.Firefox()
4 driver.implicitly_wait(0.5)
5 driver.get('http://f.python3.vip/webauto/test4.html')
6
7 # --- 点击使alert出现 ---
8 driver.find_element_by_id('b1').click()
9
10 # 打印 弹出框 提示信息
11 print(driver.switch_to.alert.text)
12
13 # 点击 OK 按钮
14 driver.switch_to.alert.accept()
1 """Confirm的操作""""
2 # --- 点击使onfirm出现 ---
3 driver.find_element_by_id('b2').click()
4
5 # 打印 弹出框 提示信息
6 print(driver.switch_to.alert.text)
7
8 # 点击 OK 按钮
9 driver.switch_to.alert.accept()
10
11 driver.find_element_by_id('b2').click()
12 # 点击 取消 按钮
13 driver.switch_to.alert.dismiss()
1 """Prompt的操作"""
2 # --- 点击使prompt出现 ---
3 driver.find_element_by_id('b3').click()
4
5 # 获取 alert 对象
6 alert = driver.switch_to.alert
7
8 # 打印 弹出框 提示信息
9 print(alert.text)
10
11 # 输入信息,并且点击 OK 按钮 提交
12 alert.send_keys('web自动化 - selenium')
13 alert.accept()
14
15 # 点击 Cancel 按钮 取消
16 driver.find_element_by_id('b3').click()
17 alert = driver.switch_to.alert
18 alert.dismiss()
注意 : 有些弹窗并非浏览器的alert 窗口,而是html元素,对这种情况的处理可以参照对内嵌html的处理
3.改变窗口大小,获取窗口标题、url地址
from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(0.5) # 打开网站 driver.get('https://www.cnblogs.com/') # 获取网站标题栏文本 print(driver.title) # 获取网站地址栏文本 print(driver.current_url) #获取窗口大小(单位是像素px) print(driver.get_window_size()) #改变窗口大小(两个参数分别是width和height) driver.set_window_size(648, 975)
4.截屏
1 from selenium import webdriver 2 3 driver = webdriver.Firefox() 4 driver.implicitly_wait(0.5) 5 6 # 打开百度网站 7 driver.get('https://www.baidu.com/') 8 9 # 截屏保存为图片文件(图片保存路径是桌面) 10 driver.get_screenshot_as_file('1.png')
5.手机模式
1 from selenium import webdriver 2 3 mobile_emulation = { "deviceName": "Nexus 5" } 4 5 chrome_options = webdriver.ChromeOptions() 6 7 chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) 8 9 driver = webdriver.Chrome( desired_capabilities = chrome_options.to_capabilities()) 10 11 driver.get('http://www.baidu.com') 12 13 input() 14 driver.quit()
6.上传文件(例如上传图片)
1 from selenium import webdriver 2 3 wd = webdriver.Firefox() 4 wd.implicitly_wait(0.5) 5 6 # 打开网站 7 wd.get('https://tinypng.com/') 8 9 # 先定位到上传文件的 input 元素 10 ele = wd.find_element_by_css_selector('input[type=file]') 11 12 # 再调用 WebElement 对象的 send_keys 方法 13 ele.send_keys(r'图片的完整路径') 14 15 #如果需要上传多个文件,可以多次调用send_keys
——end——