selenium使用基础知识--web自动化测试

from selenium import webdriver     # 导入webdrive模块
import time                        # 导入时间模块
from selenium.webdriver.common.action_chains import ActionChains
import re
import selenium.webdriver.support.ui as ui        # 导入一个等待模块
# web自动化:(selenium)
#   selenium:开源的自动化测试工具集(14年被开发出来)
#           主要是用于web应用程序的自动化测试,项目周期短的,需求多变的项目不适用
#   特点:1.开源,免费
#        2.多浏览器支持
#        3.多语言支持(python,java,c#都有)
#        4.多平台支持(Linux,Windows,mac等)
#   版本:1.0,2.0
#   2.0里面包括四个工具(1.0只有前三个工具)
#           selenium IDE:(只支持)火狐浏览器的插件,主要功能:录制和回放  可以快速的还原BUG
#           selenium Gird:自动化测试的辅助工具;主要作用:可以将测试在不同的环境下并行执行
#           selenium Rc:是selenium1.0的核心,主要作用:支持不同的语言编写的自动化测试脚本,负责控制浏览器的行为
#           Webdriver:针对不同的浏览器而开发出来的,主要作用:取代了RC在selenium中的地位,负责直接控制浏览器(RC不再使用)
#       selenium Rc:通过控制浏览器中的Javascript,来间接控制浏览器
#       webdrive:单独的程序,集成了各个浏览器的原生接口(一些函数),通过接口来直接控制浏览器
#       不同浏览器有不同的webdriver,不同版本也有不同的webdrive,放在python的第一级目录下,解压即可

# 获取网页标题
print(dr.title)
# 获取当前页面的url
print(dr.current_url)
# 页面的前进和后退
time.sleep(2)
dr.get('https://www.jd.com')
time.sleep(2)
dr.back()  # 返回到上一个请求的页面
time.sleep(2)
dr.forward()  # 前进
# 设置窗口的大小
time.sleep(2)
dr.set_window_size(200,200)   # 第一个数字为宽,第二个数字为高
# 设置窗口的位置
time.sleep(2)
dr.set_window_position(300,300)  # 第一个是x轴,第二个是y轴
# 将窗口最大化
time.sleep(2)
dr.maximize_window()
# 将窗口最小化
time.sleep(2)
dr.minimize_window()


# 操纵浏览器打开网址
# 获取网页标题    webdrive模块间接控制webdrive.exe
# selenium 核心     web应用程序自动化
# 代替人的行为对页面进行点击,输入,下拉等操作
#   系统测试,自动化测试通常用于回归测试

# 定位(核心)
# 简单定位方式:1.通过ID属性定位  2.通过class_name属性定位  3.使用name属性定位
#              4.tag_name标签名称定位(通常用来定位一组元素)
#              5.xpath路径定位  6.css路径定位  7.link_text文本定位

# xpath是xml路径语言 即通过路径定位
# 分为绝对路径(/html开头)和相对路径(//开头)
# xml是可扩展性标记语言 功能:用来存储数据  内容和html内容完全一样

# 网页源代码中,跟箭头挨着的叫标签,两个箭头之间,标签后面的键值对叫做属性
#  属性只有叫ID的属性的值是唯一的  其他的都不是唯一的


# dr = webdriver.Firefox()           # 打开浏览器
#
# dr.get('http://www.ctrip.com/')    # 发送请求

# 定位一个元素用element,不带s

# send_keys,向定位到的元素中输入
# click,点击选中的元素
# clear,清除选中的元素

# 通过ID属性定位  通过ID的值来查找元素
# dr.find_element_by_id('kw').send_keys('python')

# 通过class_name定位 通过class属性的值来查找元素 要保证class属性的值是唯一的
# dr.find_element_by_class_name('s_ipt').send_keys('python')
# 点击的动作  click()
# dr.find_element_by_id('su').click()

# 通过name属性定位
# dr.find_element_by_name('wd').send_keys('python')

# 通过xpath路径定位
# dr.find_element_by_xpath('//*[@id="kw"]').send_keys('python')

# 通过css来定位    css:层叠样式表
# dr.find_element_by_css_selector('#kw').send_keys('python')

# link_text 通过文本来定位,文本:两个标签中间的信息
# dr.find_element_by_link_text('新闻').click()    # 完全匹配文本
# dr.find_element_by_partial_link_text('123').click()    # 模糊匹配文本

# # 定位一组对象    多个 得到的是一个列表  将element变为elements即可
# a = dr.find_elements_by_class_name('mnav')
# for i in a:
#     print(a.text)

# 层级定位 当元素不好定位时,先定位父元素,再定位需要的元素
# 若采用层级定位,那么父元素只能是单个元素
# wd = dr.find_element_by_id('searchHotelLevelSelect').find_elements_by_tag_name('option')
# text 获取定位到的元素的文本

# 获取该元素某个属性的值
# i.get_attribute()

# 层级定位
# clear()  清除
# 关闭浏览器
# time.sleep(5)
# dr.quit()


# 移动鼠标位置
# dr = webdriver.Firefox()           # 打开浏览器
# dr.get('https://www.jd.com/')    # 发送请求
# a = dr.find_element_by_id('J_cate').find_elements_by_class_name('cate_menu_lk')
# for i in a:
#     ActionChains(dr).move_to_element(i).perform()




# 弹出框:(alert)
a = dr.switch_to_alert() # 获取弹出框
a.accept() # 点击弹出框上面的确定
a.dismiss() # 点击上面的取消
a.send_keys() # 输入
a.text # 获取弹出框上面的内容

# iFrame:内嵌框架
# dr.switch_to_frame()    # 括号内可以输入三种值,1.ID属性的值2.name属性的值3.先定位到此框架,然后切换
# 第三种方法示例如下
# a = dr.find_element_by_xpath()  # 定位到该框架
# dr.switch_to_frame(a)           # 切换到该框架

# dr.switch_to_default_content()  # 退出框架(退出到最开始的框架)
# dr.switch_to.parent_frame()     # 退出到父框架



window:窗口  命名唯一的标识  叫句柄:由一串数字组成
dr.current_window_handle 获取当前页面的句柄
dr.window_handles  获取所有窗口的句柄
dr.switch_to_window(句柄)  到指定句柄的窗口
dr = webdriver.Firefox()
dr.get('https://www.douban.com/')
print(dr.current_window_handle)
time.sleep(2)
print(dr.title)
dr.find_element_by_css_selector('.lnk-book').click()
time.sleep(2)
a=dr.window_handles
dr.switch_to_window(a[-1])
print(dr.title)

# 智能等待代码
wait = ui.WebDriveWait(dr,10)      # 第二个数字是最大等待时间
wait.until(lambda dr:dr.find_element_by_id('kw').is_displayed())  # 只要出现对应元素,立刻执行下一步

dr = webdriver.Firefox()
dr.get('http://www.jd.com/')
# wait = ui.WebDriverWait(dr,10)
# wait.until(lambda dr:dr.find_element_by_id('kw').is_displayed())
# dr.quit()

# 如何下拉网页
wd = "var q=document.documentElement.scrollTop=10000"
dr.execute_script(wd)


selenium 总结
1.定位  简单定位,定位一组元素,层级定位
2.对定位元素的操作  点击,输入,清除,获取定位到的元素的文本(text)
3.对弹出框的处理:alert,accept确认,dismiss取消,send_keys输入,text获取文本
4.内嵌框架iFrame switch_to_Frame  switch_to_default_content()  switch_to.Parent_Frame()
5.处理窗口window_handles current_window_handle switch_to_window(句柄)
6.智能等待:wait
7.模拟用户操作:click send_keys,move_to_element


断言:1.页面是否显示
      2.后台链中是否有对应规则
      3.发送报文测试规则
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值