web自动化(python)——selenium工具基本使用
WebDriver基本操作
生成driver——启动浏览器
#启动谷歌浏览器,预先安装chromedrvier插件
from selenium import webdriver
driver = webdriver.Chrome()
打开页面
driver.get(url)
窗口操作
大小调整
# 窗口最大化
driver.maxmize_window()
# 窗口最小化
driver.minmize_window()
# 设定宽高,单位px
driver.set_window_size()
前进后退
# 后退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()
关闭和退出
# 关闭
driver.quit()
# 退出
driver.close()
定位方式
分类:
element和element(返回列表)
定位方式
# 利用ID定位
driver.find_element_by_id(cont)
# 利用NAME定位
driver.find_element_by_name(cont)
# 利用CLASS_NAME定位
driver.find_element_by_class_name(cont)
# 利用CSS_SELECTOR定位
driver.find_element_by_css_selector(cont)
# 利用XPATH定位,分为相对路径和绝对路径
driver.find_element_by_xpath(cont)
# 利用LINK_TEXT定位
driver.find_element_by_link_text(cont)
# 利用TAG_NAME定位
driver.find_element_by_tag_name(cont)
优先级
ID> NAME>CSS_SELECTOR>XPATH
基本键盘鼠标操作
- click() # 单击
- send_keys() # 输入
- clear() # 清空
等待方式
强制等待
import time
time.sleep(S)
隐式等待
driver.implicitly_wait(S)
显示等待
# 导入模块
from selenium.webdriver.support.ui import WebDriverWait
# 打来页面时开始查询元素,找到后立即执行
WebDrivewrWait(driver,timeout,intberval).until(lambda driver: driver.find_XXX(XX))
窗口切换
iframe 切换
# 切进
driver.switch_to.frame(ele)
# 切进去,多层时需要一层一层切换,切换回时直接退回默认位置
driver.switch_to.default_content()
alert (弹窗)切换
# 确定
driver.switch_to.alert.accept()
# 取消
driver.switch_to.alert.dismiss()
windows窗口切换
# 获得句柄的列表
driver.window_handles()
# 跳转窗口,回到首页使用index=0
driver.seitch_to.window(window_handles[index])
下拉选择框
# 导入库
from selenium.Webdriver.support.select import Select
sele_le = driver.find_element_by_id(cont)
# 按下标选择
select(sele_le).select_by_index(intnum)
# 根据值选择
select().deselect_by_visible_text(value)
通过验证码
使用万能验证码(开发设置)
使用添加cookie的方式
免于登录,顺便绕过验证码
driver.add_cookie({"name":"XXX","value":"XXX"})
通过查看接口的方式来获取所有登录时获得的cookie;
图像识别技术(OTP引擎)
屏蔽验证码
文件上传
通过send_keys()
driver.find_element_by_id("Idvalue").send_keys(path)
driver.find_element_by_xpath("").click()
通过Pykeyboara,需要依次安装pyHook和PyUserInput
使用sikulik的jar包
其他,比如AutoIt
鼠标键盘操作
鼠标操作
from selenium.webdriver.common.action_chains import Actionchains
# 用Actionchains增强driver
# 点击右键
ActionChains(driver).context_click(ele).perform()
# 双击
ActionChains(driver).double_click(ele).perform()
# 悬停
ActionChains(driver).move_to_element(ele).perform()
# 长按
ActionChains(driver).click_and_hold(ele).perform()
# ActionChains用于生成用户的行为,所有的行为都存储在ActionChains对象,通过perform()执行存储的行为
键盘操作
from selenium.webdriver.common.keys import Keys
# 直接对元素进行按键操作
ele.send_keys("key")
# 组合按键操作
ele.send_keys(keys.xxx,"key1","key2")
截图
方法一:
driver.get_screenshot_as_file(path+"name.png")
方法二:
# 遇到弹窗就截图
driver.save_screenshot(path+"name.png")
方法三:
# 保存的是base64()格式的文件值,html测试报告里插入图片会用到
s=driver.get_screenshot_as_base64()
方法四:
# 保存二进制文件
S = driver.get_screenshot_as_png()
js注入
移动滚动条
方式1(只支持有ID的滚动条):
js = "var q=document.documentElement.scrollTop=100"
js_n = "var q=document.documentElement.scrollTop=0"
driver.execute_script(js_n)
方式2(拖动到指定元素):
target1=dr.find_element_by_xpath("//*[text()='页面']")
driver.execute_script("arguments[0].scriollIntoView();",target1)
修改属性
# 修改某个元素的属性
js = "document.getElementById('idname').name=value"
driver.execute_script(js)
web自动化(python)——selenium工具基本使用的更多相关文章
- WEB自动化(Python+selenium)的API
在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家 ...
- 【python+selenium的web自动化】- Selenium WebDriver原理及安装
简单介绍 selenium selenium是一个用于测试web网页的自动化测试工具,它直接运行在浏览器中,模拟用户的操作.
- 技术分享 | Web自动化之Selenium安装
Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现人为的错误,也比较费时间.因此,将这些任务自动化,就可以消除人为因素.S ...
- web自动化之selenium
一.Selenium(http://www.selenium.org/) Web自动化测试工具.它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里 ...
- web自动化之selenium(二)
selenium自动化测试框架 一.什么是自动化测试 利用软件(或者说机器代替人)实现全部或者部分测试任务的过程 二.为什么要进行自动化测试 自动化测试可以完成许多手工测试无法实现或难以实现的功能 ...
- web自动化之selenium(一)
自动化搭建环境 1.自动搭建(一) #安装 pip install webdriver-helper 1.1示例 from webdriver_helper import * #get_webdriv ...
- web自动化之selenium(六)利用坐标点定位
这是通过第三发库实现对元素的定位,因为在无法定位元素的时候,只能通过外部来定位,此时就可以使用pyautogui模块,操作鼠标,模拟人进行操作 # 使用注意事项,不要过于的依赖它 1.使用时需要在通过 ...
- web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载
一.安装selenium 命令安装selenium库 :pip install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...
- web自动化:selenium原理和元素定位(一)
一. Selenium2 WebDriver 当Selenium2.x提出了WebDriver的概念后,它提供了完全另外的一种方式与浏览器交互 那就是利用浏览器原生的API,封装成一套更加面向对象的S ...
- web自动化,selenium环境配置
1,首先我们需要在python编译器中添加selenium插件,我用的是pycharm 点击下方的Terminal,然后在命令行输入: pip install selenium 也可以在设置里面手动添 ...
随机推荐
- nova 通过 python curl 创建虚拟机---keystone v2
#! /bin/python #coding=utf- import urllib2 import json import requests # token post_url = 'http://12 ...
- mysql索引类型:FULLTEXT、NORMAL、SPATIAL、UNIQUE的区别
1. Normal 普通索引 2. Unique 唯一索引 3. Full Text 全文索引 4. SPATIAL 空间索引 5. btree索引和hash索引的区别 6. 在实际操作过程中,应该选 ...
- HTTP基础--请求
请求,由客户端向服务器端发出,可以分为4部分:请求方法(Request Method),请求的网址(Request URL),请求头(Request Headers),请求体(Request Body ...
- 程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单?| 每一张图都力求精美
悟空 种树比较好的时间是十年前,其次是现在. 自主开发了Java学习平台.PMP刷题小程序.目前主修Java.多线程.SpringBoot.SpringCloud.k8s. 本公众号不限于分享技术,也 ...
- JVM大作业5——指令集
JVM的每一个线程都有一个虚拟机栈,方法调用时,JVM会在虚拟机栈内为该方法创建一个栈帧. 一条线程,只有正在执行的方法对应的栈帧时可活动的,这个栈帧被称为当前栈帧,当前栈帧对应的方法被称为当前方法, ...
- Excel—TIME函数简介与用法
问题场景 算员工饱和度时,需要从实际考勤打卡时间中减去午休时间1.5个小时: 导出的时间时分秒是分开的,连接时分秒. 场景一 计算员工饱和度,需要减去午休时间,用下班打卡时间减去午休的1.5小时算出的 ...
- 拿捏了!ConcurrentHashMap!
概述 本文将对JDK8中 ConcurrentHashMap 源码进行一定程度的解读.解读主要分为六个部分:主要属性与相关内部类介绍.构造函数.put过程.扩容过程.size过程.get过程.与JDK ...
- 基于postman的api自动化测试实践
测试的好处 每个人都同意测试很重要,但并不是所有人都会去做.每当你添加新的代码,测试可以保证你的api按照预期运行.通过postman,你可以为所有api编写和运行测试脚本. postman中的测试 ...
- Python超级码力在线编程大赛初赛题解
P1 三角魔法 描述小栖必须在一个三角形中才能施展魔法,现在他知道自己的坐标和三个点的坐标,他想知道他能否施展魔法 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后, ...
- 通过WordCount解析Spark RDD内部源码机制
一.Spark WordCount动手实践 我们通过Spark WordCount动手实践,编写单词计数代码:在wordcount.scala的基础上,从数据流动的视角深入分析Spark RDD的数据 ...