selenium复习之---原理+基础用法

简介

1.是什么

selenium是用来进行页面元素定位的第三方库,用来进行web自动化测试的工具,可以直接运行在浏览器中。

2.原理:

selenium在工作过程中有三个角色,selenium客户端、webdriver和浏览器

selenium客户端是开发者与selenium的交互接口,它会发送指令给webdriver

浏览器则接收来自webdriver的执行命令,完成相应的操作

元素定位

浏览器操作

1.初始化浏览器对象
from selenium.webdriver import Chrome
# 创建一个浏览器对象,并且打开空页面
browser = Chrome()
2.访问指定网页
from selenium import webdriver
# 初始化浏览器为chrome浏览器
browser = webdriver.Chrome()
# 访问百度首页
browser.get(url)
3.设置浏览器大小
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get(url)
# 设置浏览器为全屏
browser.maximize_window()
time.sleep(2)
# 设置分辨率为500*500
browser.set_window_size(500, 500)
# 关闭浏览器
browser.close()
4.刷新页面
from selenium import webdriver

browser = webdriver.Chrome()
browser.maximize_window()
browser.get(url)

# 刷新页面
try:
  browser.refresh()
except Exception as e:
  print("刷新失败")
5.获取页面基本属性
# 网页标题
print(browser.title)
# 获取当前网页网址
print(browser.current.url)
# 获取浏览器的名称
print(browser.name)
# 获取浏览器的网页源码
print(browser.page_sourse)
6.浏览器页面前进和后退
browser = webdriver.Chrome()
browser.maximize_window()
browser.get("https://www.baidu.com")
time.sleep(2)

browser.get("https://www.taobao.com")
time.sleep(2)

# 后退到百度页面
browser.back()
time.sleep(5)
# 前进到淘宝页面
browser.forward()
time.sleep(5)

等待操作

页面交互操作

1. 浏览器窗口切换操作

获取当前窗口的句柄:current_window_handle

返回当前浏览器的所有窗口句柄:window_handles

用于切换到对应的窗口:switch_to_windows()

from selenium import driver
import time


browser = webdriver.Chrome()
browser.maximize_window()
browser.get("http://www.baidu.com")
# 新建一个选项卡
browser.execute_script('window.open()')
print(browser.current_window_handle)
print(browser.window.handles)
# 跳转到第二个选项卡
borwser.switch_to_window(browser.window_handles[1])
browser.get("http://www.zhihu.com")
time.sleep(5)
# 回到第一个选项卡并打开淘宝
browser.switch_to_window(browser.window_handle[0])
browser.get("http://taobao.com")
2. html嵌套iframe操作
# 切入iframe
# 使用ID切换
driver.switch_to_frame("idframe2")
# 使用name切换
driver.switch_to_name("myframe2")
# 使用index切换,从0开始
driver.switch_to_frame(1)
3. 下拉框选项处理

涉及到select模块

from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
import time

url = ""
browser = webdriver.Chrome()
browser.maximize_window()
browser.get(url)

# 获取到对应的标签
select_tag = browser.find_element(By.NAME, "帅哥")
# 根据索引值进行选择
Select(select_tag).select_by_index("2")
# 根据value进行选择
Select(select_tag).select_by_value("草儿")
# 根据文本值进行选择
Select(select_tag).select_by_visible_text("才哥")
time.sleep(5)

鼠标操作

from selenium.webdriver.common.action_chains import ActionChains


# 点击操作
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

browser = webdriver.Chrome()
browser.get(r'https://www.baidu.com')
time.sleep(2)

# 定位到要右击的元素,这里选的新闻链接
click_tag = browser.find_element(By.LINK_TEXT, '新闻')
click_tag.click()
# ActionChains(browser):调用ActionChains()类,并将浏览器驱动browser作为参数
# context_click(right_click):模拟鼠标双击,需要传入指定元素定位作为参数
# perform(): 执行ActionChains()中存储的所有操作,可以看作是执行之前的一系列操作
# 双击
# 定位到要双击的元素
double_click = browser.find_element(By.CSS_SELECTOR, '.accessibility-icon')
ActionChains(browser).double_click(double_click).perfrom()
# 右击
right_click = browser.find_element(By.CSS_SELECTOR, '.accessibility-icon')
ActionChains(browser).context_click(right_click).preform()
# 拖拽
# 开始位置
source = browser.find_element(By.CSS_SELECTOR, "#draggable")
# 结束位置
target = browser.find_element(By.CSS_SELECTOR, "#droppable")
# 执行拖拽
ActionChains(browser).drag_and_drop(source, target).perform()
# 悬停
# 定位悬停的位置
move = browser.find_element(By.ID, "s-usersetting-top")
# 执行悬停操作
ActionChains(browser).move_to_element(move).preform()

按键操作

from selenium.webdriver.common.keys import Keys
# 通过send_keys()方法来模拟键盘上的按键。

JS操作

验证码处理

unittest操作

unittest 框架是python自带的一个单元测试框架,可以进行自动化测试

unittest + selenium => webui 自动化测试

unittest + requests => 接口自动化测试

unittest + appnium = 移动应用自动化测试

1、unittest 核心要素
2、实际应用
  • 定义测试用例
  • testsuit和testrunner 实例化测试套件:suit01 = unittest.TestSuite()

    加入测试方法:suit01.addTest(TestAdd001("test_01"))

    实例化runner对象:run01 = unittest.TextTestRunner()

    运行:run01.run(suit01)

  • TestLoader 实例化runner

    运行测试用例

  • Fixture
方法级的
class Test(unittest.TestCase)
  def setUp(self):
    print("...")

  def tearDown(self):
    print("...")
类级的
class Test(unittest.TestCase):
  @classmethod
  def setUpClass(cls)->None:
    print("...")
  def tearDownClass(cls)->None:
    print("...")
模块级别的
  • 用例的跳过

    在方法前使用跳过,跳过该测试用例

    @unittest.skipIf(条件, "message")

    或者

    @unittest.skip("message")
    def test(self):
    ...
    ...

相关推荐
王大傻09281 小时前
python selenium 显示等待 + EC
开发语言·python·selenium·自动化
Token_w15 小时前
基于Selenium的新闻爬取技术实操
selenium·测试工具
jiaoxingk2 天前
Selenium如何通过js注入避免被检测
javascript·selenium·测试工具
gochanTao2 天前
Python中 BeautifulSoup和Selenium 定位元素和获取元素值的方法
python·selenium·beautifulsoup
_长银3 天前
阿里云社区领积分自动打卡Selenium IDE脚本
selenium·阿里云
ToneChip5 天前
pycharm如何安装selenium
ide·selenium·pycharm
知识的宝藏5 天前
Selenium面试题(二)
selenium·测试工具
此处不留情6 天前
一、selenium自动化简介&selenium工具集
selenium·测试工具·自动化
犇犇犇犇犇犇6 天前
Java+Selenium+ChromeDriver谷歌版环境搭建
java·selenium·测试工具
newxtc6 天前
【吉利汽车安全应急响应中心-登录/注册安全分析报告-无验证方式导致安全隐患】
开发语言·python·selenium·测试工具·安全·汽车