IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试selenium之webdriver常用的API -> 正文阅读

[开发测试]自动化测试selenium之webdriver常用的API

1、webdriver的工作原理简述:

  • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的 remote server。
  • 客户端(测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议是The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium希望对浏览器的操作)。
  • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

2、webdriver常用的API

(1)简单的脚本示例(解/注释快捷键:Crtl+/)

coding=utf-8  # 防止乱码 可不加
from selenium import webdriver  # 导入包后才可使用selenium中webdriver里的函数
import time      # 为视觉效果以及给页面加载留时间 后续需要用到时间函数 所以导入相应的包
driver=webdriver.Chrome()  # 需要操控的浏览器是Chorme 注意首字母大写
driver.get("https://www.baidu.com/") # 在浏览器上打开百度

# 根据页面输入框的控件属性(这里是id) 输入thoughtworks
driver.find_element_by_id("kw").send_keys("thoughworks") 
driver.find_element_by_id("su").click() # 输入结束后 根据按钮的控件属性(id)点击查找
time.sleep(8) #停留八秒 视觉效果

driver.quit()  # 退出并关闭窗口的每一个相关的驱动程序 彻底退出 释放连接
# driver.close() # 关闭当前窗口

(2)元素定位

  • 对象的定位是自动化测试的核心。操作一个对象前,应先识别该对象。
  • 对象具有自己的属性,我们可以通过这个属性找到这对象。尤其需要保证页面上对象的属性的唯一性。比如通过名字无法精准找到一个人,但通过身份证号可以。
  • webdriver 常用的几种对象定位方法有:id、name、class name、link text、partial link text、 tag name、 xpath、css selector。其中id、xpath、css selector这三者均可唯一定位到元素。
  • 示例
from selenium import webdriver
import time

driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")

# id定位
driver.find_element_by_id("kw").send_keys("西安")
# name定位
driver.find_element_by_name("wd").send_keys("西安")
# class name定位
driver.find_element_by_class_name("s_ipt").send_keys("西安")
# tag name定位 不会成功 因为input不唯一
driver.find_element_by_tag_name("input").send_keys("西安")
# xpath定位
driver.find_element_by_xpath("//*[@id='kw']").send_keys("西安")
# CSS定位
driver.find_element_by_css_selector("#kw").send_keys("西安")

driver.find_element_by_id("su").click()
time.sleep(8)
driver.quit()

一个热知识:xpath可以用Chrome的F12开发者模式中Element-右键-copy-copy xpath来获取。

(3)操作测试对象

定位元素后即可对其进行操作,webdriver 中比较常用的操作对象的方法如下:

  • click:点击对象
  • send_keys:在对象上模拟按键输入
  • clear:清除对象的内容
  • submit:提交表单
  • text:获取元素的文本信息

示例:

from selenium import webdriver

import time

driver=webdriver.Chrome()

# 浏览器最大化
driver.maximize_window()
time.sleep(2)

driver.get("https://www.baidu.com/")

#
# # 操作浏览器的前进、后退
# first_url="https://www.baidu.com/"  # 访问百度首页
# driver.get(first_url)
# time.sleep(3)
#
# second_url="https://news.baidu.com/" # 访问新闻页面
# driver.get(second_url)
# time.sleep(3)
#
# driver.back() # 后退到百度首页
# time.sleep(2)
#
# driver.forward() # 前进到新闻页



# 设置浏览器宽、高
# driver.set_window_size(2000, 1000)
# time.sleep(4)



# 打印url
# url=driver.current_url
# print(url)

driver.find_element_by_id("kw").send_keys("西安")
driver.find_element_by_id("su").click()
time.sleep(4)

# #  控制浏览器滚动条
js="var q=document.documentElement.scrollTop=10000" # 滚动条拖到页面底部
driver.execute_script(js)
time.sleep(3)

js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(3) # 滚动条拖到顶部


# driver.find_element_by_id("kw").clear()
# time.sleep(2)
# driver.find_element_by_id("kw").send_keys("十四届全运会")
# driver.find_element_by_id("su").submit()

# 获得文本信息
# text=driver.find_element_by_id("bottom_layer").text
# print(text)

# 固定等待和智能等待
# driver.find_element_by_id("kw").send_keys("西安")
# driver.find_element_by_id("su").submit()

# time.sleep(4) 固定等待 保证以上页面加载完后再进入下面的链接
# 智能等待 加载完毕后立即进入
# driver.implicitly_wait(10)
# driver.find_element_by_link_text("西安(陕西省辖地级市、省会) - 百度百科").click()

# 在打印title时 如果没有这句 则在未完全加载的情况下 会打印 百度一下 你就知道
# time.sleep(6)

# 打印title
# title=driver.title
# print(title)

# 打印url
# url2=driver.current_url
# print(url2)


driver.quit()

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章           查看所有文章
加:2021-07-15 16:31:53  更:2021-07-15 16:34:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 5:44:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码