Web自动化测试-selenium+unittest+jenkins

在这里插入图片描述

Web自动化-Selenium

1.软件需求变更不频繁
2.项目周期比较长
3.需要频繁回归的场景在这里插入图片描述

传统八大元素定位

定位方式 方法
ID定位 find_element(By.ID,“id属性值”)
NAME定位 find_element(Dy.NAME,“name属性值”)
CLASS定位 1.find_element(By.CLASS_NAME,“class_name属性值”) 2.find_elements(By.CLASS_NAME,“class_name属性值”)
TAG_NAME定位 find_elements(By.TAG_NAME, " ")
CSS_SELECTOR定位 find_element(By.CSS_SELECTOR,“标签名”)
LINK_TEXT 定位 find_element(By.LINK_TEXT,“超链接全部文本值”)
PARTIAL_LINK_TEXT定位 find_element(By.PARTIAL_LINK_TEXT,“超链接部分文本值”)
XPATH定位 find_element(By.XPATH," ")

小结

  1. 如果元素有明确id,name,class属性时,使用对应的基本定位方法。
  2. 如果没有id,name,class属性时,或id,name,class属性是动态/不唯一的时候,使用XPath和css_selector定位。
  3. 定位页面超链接使用link_text和partial_link_text定位
  4. 可使用XPath和css_selector定位的时候,优先使用css_selector。css_selector定位的速度和效率比Xpath高。

浏览器操作方法

1、driver.maximize_window()  # 最大化浏览器
2、driver.set_window_size(w,h)  # 设置浏览器大小 单位像素 
3、driver.set_window_position(x,y)  # 设置浏览器位置
4、driver.back() # 后退操作
5、driver.forward() # 前进操作
6、driver.refrensh() # 刷新操作
7、driver.close() # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
8、driver.quit() # 关闭driver对象启动的全部页面
9、driver.title # 获取当前页面title信息
10、driver.current_url # 获取当前页面url信息

注意:
driver.titledrivet.current_url是属性,后面没有括号。应用场景:一般判断上不操作是否执行成功
driver.close()driver.quit() 的区别:
close():关闭当前主窗口
quit():关闭由driver对象启动的所有页面
如果只有一个窗口那么quit()close()没有区别。

获取元素信息操作

1、text 获取元素的文本; 如:driver.text
2、size 获取元素的大小: 如:driver.size
3、get_attribute 获取元素属性值;如:driver.get_attribute("id") ,传递的参数是元素的属性名
4、is_displayed 判断元素是否可见 如:element.is_displayed()
5、is_enabled 判断元素是否可用 如:element.is_enabled()
6、is_selected 判断元素是否被选中 如:element.is_selected()

在这里插入图片描述

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()
# 打开百度页面
driver.get("https://www.baidu.com")
# 最大化窗口
driver.maximize_window()
# 设置隐式等待10秒
driver.implicitly_wait(10)
# 获取元素的文本
print(driver.find_element(By.LINK_TEXT, "新闻").text)
# 获取元素大小
print(driver.find_element(By.LINK_TEXT, "新闻").size)
# 获取页面url
print(driver.current_url)
# 获取元素title
print(driver.title)
# 获取元素属性
print(driver.find_element(By.LINK_TEXT, "新闻").get_attribute("class"))
print(driver.find_element(By.LINK_TEXT, "新闻").get_attribute("id"))
print(driver.find_element(By.LINK_TEXT, "新闻").get_attribute("target"))

在这里插入图片描述

元素等待

1、为什么要设置元素等待

​ 由于电脑配置或网络原因,在查找元素时,元素代码未在第一时间内被加载出来,而抛出未找到元素异常。

2、什么是元素等待

​ 元素在第一次未找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素,继续执行代码,如果超出设置的时长未找打元素,抛出未找到元素异常。

3、元素等待分类

隐式等待:针对所有元素生效。一般情况下为前置必写代码(1.获取浏览器驱动对象;2. 最大化浏览器;3. 设置隐式等待)

​ 显示等待:等待某个条件成立则继续执行,否则在达到最大时长时抛出超

时异常(TimeoutException)。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
element = WebDriverWait(driver, 5, 0.5).until(EC.visibility_of_element_located((By.ID, "kw")))
element.send_keys('selenium')

WebDriverWait 类是 WebDriver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次,当前页面元素是否存在,如果超过设置时间仍检测不到,则抛出异常。WebDriverWait()一般与 until()或 until_not()方法配合使用

鼠标操作

实例化鼠标对象ActionChains(driver)

1、context_click(element) # 右击
2、double_click(element)  #双击
3、double_and_drop(source, target)  # 拖拽
4、move_to_element(element)  # 悬停 【重点】
5、perform()  # 执行以上鼠标事件的方法 【重点】
6、click_and_hold(on_element=None) # 模拟鼠标单击并且按住不放
7、move_to_element_with_offset(to_element,xoffset,yoffset) # 移动鼠标至指定的坐标
8、click() # 左击

注意: selenium 框架虽然提供了 鼠标右键方法,但是没有提供选择右键菜单方法,可以通过键盘快捷键操作实现

from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()
# 打开百度页面
driver.get("https://www.baidu.com")
# 最大化窗口
driver.maximize_window()
# 设置隐式等待10秒
driver.implicitly_wait(10)
# 实例化鼠标对象
action=ActionChains(driver)
# 定位”新闻链接“
news=driver.find_element(By.LINK_TEXT,"新闻")
# 右键”新闻链接“
action.context_click(news)
# 悬停到”设置“
action.move_to_element(driver.find_element(By.CSS_SELECTOR,"#s-usersetting-top"))
# 鼠标执行操作!!!不执行没效果
action.perform()
sleep(2)
quit()

键盘操作

send_keys()方法可以用来模拟键盘输入,我们还可以用它来输入键盘上
的按键,甚至是组合键,如 Ctrl+aCtrl+c 等。
Keys.BACK_SPACE:删除键。
Keys.SPACE:空格键。
Keys.TAB:Tab 键。
Keys.ESCAPE:回退键。
Keys.ENTER:回车键。
Keys.CONTROL,”a”:组合键 Ctrl + A。
Keys.CONTROL,”x”:组合键

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值