Selenium 自动化测试工具
1 介绍
Selenium是浏览器的自动化测试工具,使用它可以控制浏览器各种点击等操作。
2 环境搭建
先安装Chrome等浏览器,然后安装对应版本的ChromeDriver驱动程序,然后pip安装Selenium
2 代码示例
看完,这个程序,你就掌握Selenium的基本用法
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver import ActionChains
from selenium.common.exceptions import NoSuchElementException
import time browser=webdriver.Chrome() # 实例化一个Chrome
try:
browser.get('https://www.baidu.com/') # 百度======================================================================= # # 例子测试
# input = browser.find_element_by_id('kw') # 查找对应节点
# input.send_keys('python')
# input.send_keys(Keys.ENTER)
# wait = WebDriverWait(browser, 10)
# wait.until(EC.presence_of_element_located((By.ID, 'content_left')))
# print(browser.current_url) #当前页面url
# print(browser.get_cookies()) # 当前页cookies
# print(browser.page_source) # 当前页source html # 查找节点的方法
# input_first=browser.find_element_by_id('kw')
# input_second = browser.find_element_by_css_selector('#kw')
# input_third = browser.find_element_by_xpath('//*[@id="kw"]')
# print(input_third,input_second,input_third) # browser.get('https://www.taobao.com') # 淘宝======================================================================= # 多个节点
# # lis=browser.find_elements_by_css_selector('.service-bd li') # 主要是将element换成elements
# lis=browser.find_elements(By.CSS_SELECTOR,'.service li') # 和上面一样的
# print(lis) # 节点交互
# input=browser.find_element_by_id('q')
# input.send_keys('iphone') # 输入文字
# time.sleep(5)
# input.clear() # 清空文字
# input.send_keys('ipad')
# button=browser.find_element_by_class_name('btn-search')
# button.click() #按钮点击 # 选项卡管理
browser.execute_script('window.open()') # 打开一个选项啦
time.sleep(3)
print(browser.window_handles)
browser.switch_to.window(browser.window_handles[1]) # 跳转到第二个选项卡
browser.get('https://www.taobao.com') # 第二个选项卡访问淘宝
time.sleep(3)
browser.switch_to.window(browser.window_handles[0]) # 跳转回第一个选项卡
browser.get('https://zhihu.com/explore') # 第一个选项卡访问知乎发现页 ,这样关闭的时候只会关闭第一个选项卡 # # 前进 后退
# browser.get('https://www.baidu.com/')
# browser.get('https://www.zhihu.com/explore')
# browser.back() # 后退
# time.sleep(3)
# browser.forward()
# time.sleep(3) # 延时等待——显示等待
# wait=WebDriverWait(browser,10) # 规定时间加载出来返回节点,没查找出来抛出异常
# input=wait.until(EC.presence_of_element_located((By.ID,'q')))
# button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
# print(input,button) # browser.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') # 菜鸟教程======================== # # 动作链
# browser.switch_to.frame('iframeResult') # 切换iframe
# source=browser.find_element_by_css_selector('#draggable')
# target=browser.find_element_by_css_selector('#droppable')
# actions=ActionChains(browser) # 创建一个动作链对象
# actions.drag_and_drop(source,target) # 调用actions的拖拽方法
# actions.perform() # 执行方法 # # 切换Frame
# browser.switch_to.frame('iframeResult')
# try:
# logo=browser.find_element_by_class_name('logo')
# except NoSuchElementException:
# print('No Logo')
# browser.switch_to.parent_frame()
# logo=browser.find_element_by_class_name('logo') # 切换回父级frame
# print(logo)
# print(logo.text) # browser.get('https://zhihu.com/explore') # 知乎 发现页============================================================== # # 执行JavaScript
# browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# time.sleep(3)
# browser.execute_script('alert("To Bootom!")')
# time.sleep(3)
# browser.switch_to.alert.accept() # # 获取节点信息
# logo=browser.find_element_by_id('Popover1-toggle')
# print(logo)
# print(logo.get_attribute('class')) # 获取属性
# input=browser.find_element_by_class_name('ExploreSpecialCard-title')
# print(input.text) # 获取文本
# print(input.id) # 获取id
# print(input.location) # 获取location
# print(input.tag_name) # 获取tag_name
# print(input.size) # 获取大小 # # Cookies
# print(browser.get_cookies())
# browser.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'}) # 添加一个cookie
# print(browser.get_cookies())
# browser.delete_all_cookies() # 删除所有的cookies
# print(browser.get_cookies()) # 延时等待-隐式等待
# browser.implicitly_wait(10) #在找不到节点的时候等待10s之后抛出异常
# input=browser.find_element_by_class_name('zu-top-add-question') # 这个节点不存在
# print(input) finally:
browser.close()
Selenium 自动化测试工具的更多相关文章
- selenium自动化测试工具模拟登陆爬取当当网top500畅销书单
selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制 ...
- selenium自动化测试学习(一)
在学习selenium自动化测试前,我们需要先了解一点自动化测试的相关知识. (一)什么是自动化测试 (二)为什么要做自动化测试 (三)自动化测试优缺点 (1)什么是自动化测试 自动化测试是把以人为驱 ...
- 开源Web自动化测试工具Selenium IDE
Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...
- 杂项-自动化测试工具:Selenium(浏览器自动化测试框架)
ylbtech-杂项-自动化测试工具:Selenium(浏览器自动化测试框架) Selenium 是一个用于Web 应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一 ...
- 【tips】自动化测试工具 - selenium和phantomJS
### 目录清单 selenium和phantomjs概述 selenium常用API 案例操作:模拟登陆csdn 1. selenium和phantomJS是什么东西 selenium是一套web网 ...
- python网络爬虫之自动化测试工具selenium[二]
目录 前言 一.获取今日头条的评论信息(request请求获取json) 1.分析数据 2.获取数据 二.获取今日头条的评论信息(selenium请求获取) 1.分析数据 2.获取数据 房源案例(仅供 ...
- Selenium浏览器自动化测试工具
目录 Selenium浏览器自动化测试工具 Selenium模块在爬虫中的使用 Python简单使用Selenium Selenium的基本操作 Selenium爬取动态加载的数据 Selenium动 ...
- Web应用程序自动化测试工具Selenium的主要功能有哪些?
Selenium是一个用于Web应用程序测试的工具.是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium可 ...
- python自动化测试工具selenium使用指南
概述 selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等.官网地址为:https://www.selenium.dev/.相对于另外一款web自动化测试工具QTP ...
- 自动化测试工具selenium webdirver
看视频学到的,自动化测试工具,可以模拟用户操作,包括输入,点击等操作 新建新文件夹 在命令行执行npm init ,一路回车,把项目先初始化 安装 npm install selenium-web ...
随机推荐
- TSP 的遗传算法
省流:不如模拟退火 打 OI 的时候一直对乱搞很感兴趣,只是没时间学,现在算是弥补一下吧 旅行商问题(Traveling Salesman Problem, TSP):求无向图边权和最小的哈密顿回路 ...
- shell编程入门-适合小白
一.变量的使用 1. 变量命名 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="yikoulinux" 注意,变量名和等号之间不能有空格,这 ...
- C#模拟键盘输入、键状态和监听键盘消息
模拟键盘输入 模拟键盘输入的功能需要依赖Windows函数实现,这个函数是SendInput,它是专门用来模拟键盘.鼠标等设备输入的函数. 另外和键盘输入相关的函数还有SendKeys,它是Syste ...
- Linux-mknod命令
mknod 创建块设备或者字符设备文件.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 用法: mknod [选项]... 名称 类型 ...
- 【Appium】之自动化定位总结
一.同级定位时,先定位上级 我想定位[必填]框,我先定位[姓名]的同一个上级 self.driver.find_element(MobileBy.XPATH,"//*[contains(@t ...
- c++学习笔记(五):文件操作
目录 文件操作 文本文件 写文件 include 读文件 include 二进制文件 写文件 读文件 文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将数据持久化 ...
- vue grid layout 设定某组件为最低位,其它子item无法拖拽超过
逻辑: 设定某项X为底部 逻辑: for 循环获取最低位的item Y的信息:i 和 y 如果i != X.i initY = X.y 则调整X.y ...
- Splay/LCT 学习笔记
唔,其实我不会 Splay,但是我会 LCT. 众所周知,会 LCT 和会 Splay 是两回事,因为 LCT 只需要旋至根即可. 到现在还是不会,但是先把 LCT 的 Splay 写一下吧. 自己复 ...
- 【学习笔记】状压DP
状态压缩DP 对于一个集合,他一有\(2^n\)个子集,而状态压缩就是枚举这些子集,每一个状态就是一个由\(01\)构成的集合,如果为\(0\)就表示不选当前的元素,否则就表示选.因为状态压缩将每一个 ...
- 【赵渝强老师】Kubernetes的探针
Kubernetes提供了探针(Probe)对容器的健康性进行检测.实际上我们不仅仅要对容器进行健康检测,还要对容器内布置的应用进行健康性检测. Probe有以下两种类型: livenessProbe ...