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——

posted @ 2020-01-10 14:52  -Ruirui-  阅读(294)  评论(0编辑  收藏  举报