Selenium自动化测试框架

这篇具有很好参考价值的文章主要介绍了Selenium自动化测试框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.Selenium概述

1.1 什么是框架?

框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的

结构用于去解决或者处理复杂的问题。

框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义
认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

框架,其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用

别人搭好的舞台,你来做表演。

1.2 为什么使用框架?

1)自己从头实现太复杂

2)使用框架能够更专注于业务逻辑,加快开发速度

3)框架的使用能够处理更多细节问题

4)使用人数多,稳定性,扩展性好

1.3 Selenium 工作原理

selenium框架,程序员,职场日常,软件测试,selenium,python,职场经验,自动化测试,软件测试

二.Selenium API基础

1.前提操作

(1)导入库

from selenium import webdriver

(2)创建浏览器对象

driver=webdriver.Chrome()   #创建浏览器对象  谷歌浏览器
driver.get('https://www.baidu.com/')  #访问网址 百度

2.方法

我们需要使用dir()来查看方法

print(dir(driver))

(1) 调整浏览器的尺寸

driver.maximize_window() #窗口最大化

print(driver.get_window_size()) #获取浏览器尺寸 {‘height’: 1020, ‘width’: 945}

driver.set_window_size(width=‘1200’,height=‘1000’) #设置浏览器尺寸

(2) 调整浏览器的位置

print(driver.get_window_position())   #获取浏览器位置  {'x': 10, 'y': 10}

print(driver.set_window_position(100,100))      #设置浏览器位置

(3) 获取当前页面的url

print(driver.current_url) #https://www.baidu.com/

(4) 获取当前页面的title

print(driver.title) #百度一下,你就知道

(5) 刷新页面

driver.refresh()

(6) 返回上一页/下一页

driver.back() #上一页

driver.forward() #下一页

(7) 保存图片

#方式一:

data=driver.get_screenshot_as_png()
with open(‘111.jpg’,‘wb’) as f:
f.write(data)

#方式二:

driver.get_screenshot_as_file(‘222.jpg’)

(8) 查看网页源码

print(driver.page_source)

(9) 关闭网页

driver.close() #关闭当前页面

driver.quit() #关闭所有页面

3.元素定位

# 方式一: driver.find_element_by_xxx(value)
# 方式二:driver.find_element(By.xxx,value)
# 1.id
input=driver.find_element_by_id('kw')
input.send_keys(12306)
# 2.class
input=driver.find_element_by_class_name('s_ipt')
input.send_keys(12306)
# 3.name
input=driver.find_element_by_name('wd')
input.send_keys(12306)
# 4.xpath
input=driver.find_element_by_xpath('//*[@id="kw"]')
input.send_keys(12306)
# 5.css
input=driver.find_element_by_css_selector('#kw')
input.send_keys(12306)
# 6.link_text 全匹配
news=driver.find_element_by_link_text('新闻')
news.click()
# 7.partial_link_text  模糊匹配
news=driver.find_element_by_partial_link_text('闻')
news.click()
# 8.tag name  标签名
put=driver.find_element_by_tag_name("span")
put.click()

三.Selenium API高级

3.1 页面跳转

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://bj.58.com')
# 获取当前页面的句柄
h1=driver.window_handles
print('58同城:',h1)
# 定位元素  宠物
a=driver.find_element_by_link_text('宠物')
# 点击宠物
a.click()
# 获取点击跳转之后的句柄
h2=driver.window_handles
print('宠物:',h2)
# 跳转句柄
driver.switch_to.window(h2[1])
# 定位元素  宠物狗
dog=driver.find_element_by_xpath('/html/body/div[3]/div[1]/dl[1]/dd[1]/a/strong')
# dog=driver.find_element_by_link_text('宠物狗')
dog.click() 
# 获取点击跳转之后的句柄
h3=driver.window_handles
print('宠物狗:',h3)
# 跳转句柄
driver.switch_to.window(h3[2])
 
# 定位元素
small=driver.find_element_by_css_selector('#selection > dl:nth-child(1) > dd > a:nth-child(6)')
small.click()

3.2 表单跳转

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://qzone.qq.com/')  #访问qq空间页面
driver.maximize_window()  #窗口最大化
 
#定位表单
frame=driver.find_element_by_id('login_frame')
# 表单跳转
driver.switch_to.frame(frame)
time.sleep(2)
# 点击密码登录
driver.find_element_by_link_text('密码登录').click()
time.sleep(2)
# 输入账号
driver.find_element_by_id('u').send_keys('1720003909')
time.sleep(2)
# 输入密码
driver.find_element_by_id('p').send_keys('xqy20001220')
time.sleep(2)
# 点击登录
driver.find_element_by_id('login_button').click()
# 关闭页面
driver.close()

3.3 弹出框操作

#进入弹出框
    driver.switch_to.alert
#接收警告
    accept()
#解散警告
    dismiss()
#发送文本到警告框
    send_keys(data)
代码:


from selenium import webdriver
import time
 
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
 
# 定位 设置
set=driver.find_element_by_id('s-usersetting-top')
set.click()
 
# 定位 搜索设置
search=driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[1]/span')
search.click()
 
# 定位 每页20条
page=driver.find_element_by_xpath('/html/body/div[1]/div[6]/div/div/div/div[1]/form/div/ul/li[3]/span[2]/span[2]/label')
page.click()
 
# 定位 保存设置
save=driver.find_element_by_css_selector('#se-setting-7 > a.prefpanelgo.setting-btn.c-btn.c-btn-primary')
save.click()
 
time.sleep(2)
driver.switch_to.alert.accept()     #弹框处理
# driver.switch_to.alert.dissmiss() #弹框处理

3.4 滚动条操作

from selenium import webdriver
import time
 
driver=webdriver.Chrome()
driver.get('http://bj.58.com')
 
time.sleep(3)
# 滚动条到底部
# js="var q=document.documentElement.scrollTop=10000"
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)  #执行js
 
time.sleep(3)
# 顶部
js="window.scrollTo(0,0)"
driver.execute_script(js)
 
time.sleep(3)
# 移动到指定元素
target = driver.find_element_by_xpath('/html/body/div[3]/div[1]/div[1]/div/div[2]/div[2]/a[13]') #定位移动到的元素
driver.execute_script("arguments[0].scrollIntoView();", target)
target.click()

3.5 鼠标键盘操作

from selenium import webdriver
from selenium.webdriver import ActionChains  #鼠标操作
from selenium.webdriver.common.keys import Keys  #键盘操作
import time
 
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
 
# 定位元素  更多
more=driver.find_element_by_link_text('更多')
 
#鼠标操作
ActionChains(driver).click(more).perform()   #鼠标左击
ActionChains(driver).context_click(more).perform() #鼠标右击
ActionChains(driver).move_to_element(more).perform()  #鼠标悬浮
 
#键盘操作
srk = driver.find_element_by_id("kw")
srk.send_keys(12306)
time.sleep(2)
srk.send_keys(Keys.CONTROL,"a")
srk.send_keys(Keys.CONTROL,"x")
time.sleep(2)
srk.send_keys(Keys.CONTROL,'v')

3.6 下拉框操作

from selenium import webdriver
 
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
 
driver.maximize_window()
 
# 定位元素  设置按钮
set=driver.find_element_by_id('s-usersetting-top')
set.click()
 
# 定位元素   高级搜索
find=driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[2]/span')
find.click()
 
# 定位元素  全部时间
time=driver.find_element_by_class_name('c-select-selected-value')
time.click()
 
# 定位元素  最近一月
m=driver.find_elements_by_class_name('c-select-item')
 
#方式一:
m[3].click()
 
#方式二
for i in m:
    if i=='最近一月':
        i.click()

3.7 等待操作

(1)强制等待


import time         #强制等待:无论网络是否良好,必须等待对应的时间,才会执行下面的代码
time.sleep(3)
(2) 隐式等待


driver.implicitly_wait(100)  #隐式等待,当前界面的所有元素全部加载完成,才会执行下面的代码
(3) 显示等待


from selenium.webdriver.support.wait import WebDriverWait   #导入显性等待的包
from selenium.webdriver.support import expected_conditions as EC  #判断所需要的元素是否已经被加载出来
from selenium.webdriver.common.by import By  #定位
 
# 定位元素  设置按钮
WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,"s-usersetting-top")))
set=driver.find_element_by_id('s-usersetting-top')
set.click()

四.Selenium IDE

4.1 什么是Selenium IDE?

Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。

它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,
但它只能用于只用Firefox浏览器不支持其它浏览器

4.2 IDE功能简介

selenium框架,程序员,职场日常,软件测试,selenium,python,职场经验,自动化测试,软件测试

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
selenium框架,程序员,职场日常,软件测试,selenium,python,职场经验,自动化测试,软件测试

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

selenium框架,程序员,职场日常,软件测试,selenium,python,职场经验,自动化测试,软件测试
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

全套资料获取方式:

selenium框架,程序员,职场日常,软件测试,selenium,python,职场经验,自动化测试,软件测试
selenium框架,程序员,职场日常,软件测试,selenium,python,职场经验,自动化测试,软件测试文章来源地址https://www.toymoban.com/news/detail-780392.html

到了这里,关于Selenium自动化测试框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium 自动化测试框架学习笔记

    pip install selenium == 4.9.1  -i https://pypi.tuna.tsinghua.edu.cn/simple 下载驱动: 安装完 selenium 后,还需要安装使用 selenium 控制的浏览器需要的驱动。 谷歌驱动下载地址: https://googlechromelabs.github.io/chrome-for-testing/#stable 驱动下载完成后将文件移动到系统环境变量中: MacOS :将文件移动

    2024年01月23日
    浏览(32)
  • Selenium4自动化测试框架

    Selenium 介绍 Selenium 是目前用的最广泛的 Web UI 自动化测试框架,核心功能就是可以在多个浏览器上进行自动化测试,支持多种编程语言,目前已经被 google,百度,腾讯等公司广泛使用。 1、配置 google 驱动的环境变量,如果不配置需要在代码中指定驱动位置。 2、eclipse 中导入

    2024年02月03日
    浏览(33)
  • Python + selenium 自动化测试框架

    项目自动化测试框架设计为4层 1.基础层(通用层) 基础层: 将通用,重复性比较高的代码封装到这里。 写通用的代码的。 其他3层想要的话,就可以直接调用。 例如: 读取测试数据的代码,读取配置信息的代码;截图的代码的,定位元素的代码等等 2.功能层(页面层) 功

    2023年04月13日
    浏览(32)
  • Selenium+Pytest自动化测试框架详解

    selenium自动化+ pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承; 一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 测试框架有什么优点 代码复用率高,如果不使用框架的话,代码会很冗余 可以组装日志、报告、邮件等

    2024年02月08日
    浏览(76)
  • Selenium Web自动化测试框架实践

    目录        前言: 项目背景 功能实现 项目架构 浏览器driver定义 用例运行前后的环境准备工作 工具方法模块 Pageobject页面对象封装 执行测试用例        前言:          Selenium是一个基于Web的自动化测试框架,可以通过模拟用户在浏览器上的操作,来自动化地测试Web应

    2024年02月10日
    浏览(42)
  • Selenium浏览器自动化测试框架

    介绍 Selenium [1]  是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否

    2024年02月02日
    浏览(36)
  • 自动化测试框架selenium之webdriver

    对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象,一个对象有很多的属性,我们可以通过这些属性找到对象。 注意:不管用那种方式,必须保证页面上该属性的唯一性 webdriver 提供了一系列的对象定位方法,常用的有以下几种 id name class nam

    2024年02月12日
    浏览(35)
  • Python + selenium 自动化测试框架详解

    项目自动化测试框架设计为4层 1.基础层(通用层) 基础层: 将通用,重复性比较高的代码封装到这里。 写通用的代码的。 其他3层想要的话,就可以直接调用。 例如: 读取测试数据的代码,读取配置信息的代码;截图的代码的,定位元素的代码等等 2.功能层(页面层) 功

    2024年02月03日
    浏览(29)
  • selenium测试框架快速搭建(UI自动化测试)

    一、介绍         selenium目前主流的web自动化测试框架;支持多种编程语言Java、pythan、go、js等;selenium 提供一系列的api 供我们使用,因此在web测试时我们要点页面中的某一个按钮,那么我们只需要获取页面,然后根据id或者name找到对应的按钮,然后执行click操作就可以完成

    2024年02月02日
    浏览(50)
  • 【自动化测试】基于Selenium + Python的web自动化框架

    Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,p

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包