Selenium+Python3的web自动化测试(四)

------------恢复内容开始------------

本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/

感谢上方大佬!

所整理的正文如下:

首先,在搭建好Selenium+Python3的环境基础上,测试要点如下:

1.捕捉鼠标移动到元素上才显示的内容信息,如百度首页的右上角,有个 更多产品 选项,如下图所示

Selenium+Python3的web自动化测试(四)

 鼠标移动到元素上会显示隐藏的内容,完成这步的操作如下

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

相关推荐