Selenium+Python3的web自动化测试(四)
------------恢复内容开始------------
本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/
感谢上方大佬!
所整理的正文如下:
首先,在搭建好Selenium+Python3的环境基础上,测试要点如下:
1.捕捉鼠标移动到元素上才显示的内容信息,如百度首页的右上角,有个 更多产品 选项,如下图所示
鼠标移动到元素上会显示隐藏的内容,完成这步的操作如下
#selenium提供的ActionChains类包含了许多鼠标操作如右键点击,双击,移动到某元素,拖拽等 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Firefox() driver.implicitly_wait(0.5) driver.get(‘https://www.baidu.com/‘) ac = ActionChains(driver) # 鼠标移动到 元素上 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 弹出框 ,是需要用户输入一些信息,提交上去。
"""Alert的操作""" from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(0.5) driver.get(‘http://f.python3.vip/webauto/test4.html‘) # --- 点击使alert出现 --- driver.find_element_by_id(‘b1‘).click() # 打印 弹出框 提示信息 print(driver.switch_to.alert.text) # 点击 OK 按钮 driver.switch_to.alert.accept()
"""Confirm的操作"""" # --- 点击使onfirm出现 --- driver.find_element_by_id(‘b2‘).click() # 打印 弹出框 提示信息 print(driver.switch_to.alert.text) # 点击 OK 按钮 driver.switch_to.alert.accept() driver.find_element_by_id(‘b2‘).click() # 点击 取消 按钮 driver.switch_to.alert.dismiss()
"""Prompt的操作""" # --- 点击使prompt出现 --- driver.find_element_by_id(‘b3‘).click() # 获取 alert 对象 alert = driver.switch_to.alert # 打印 弹出框 提示信息 print(alert.text) # 输入信息,并且点击 OK 按钮 提交 alert.send_keys(‘web自动化 - selenium‘) alert.accept() # 点击 Cancel 按钮 取消 driver.find_element_by_id(‘b3‘).click() alert = driver.switch_to.alert 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.截屏
from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(0.5) # 打开百度网站 driver.get(‘https://www.baidu.com/‘) # 截屏保存为图片文件(图片保存路径是桌面) driver.get_screenshot_as_file(‘1.png‘)
5.手机模式
from selenium import webdriver mobile_emulation = { "deviceName": "Nexus 5" } chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) driver = webdriver.Chrome( desired_capabilities = chrome_options.to_capabilities()) driver.get(‘http://www.baidu.com‘) input() driver.quit()
6.上传文件(例如上传图片)
from selenium import webdriver wd = webdriver.Firefox() wd.implicitly_wait(0.5) # 打开网站 wd.get(‘https://tinypng.com/‘) # 先定位到上传文件的 input 元素 ele = wd.find_element_by_css_selector(‘input[type=file]‘) # 再调用 WebElement 对象的 send_keys 方法 ele.send_keys(r‘图片的完整路径‘) #如果需要上传多个文件,可以多次调用send_keys
——end——
相关推荐
4.启动命令windows:chrome --remote-debugging-port=9222启动命令mac:Google\ Chrome --remote-debugging-port=9222