webdriver常见方法

  • 一、元素的点击、文本内容的清楚、输入
  • 二、submit提交表单
  • 三、其他的方法
    • 1.打开浏览器
    • 2.设置浏览器最大化
    • 3.设置隐式等待
    • 4.打开网页
    • 5.定位搜素框
    • 6.输入内容
    • 7.返回搜素框元素的大小 返回 {‘height’: 38, ‘width’: 503}
    • 8.获取 百度一下 这个按钮元素的 value属性的值
    • 9.鼠标事件
    • 10.键盘事件
    • 11.获取断言信息
    • 12.设置元素等待
    • 13.多窗口切换
    • 14.表单切换

一、元素的点击、文本内容的清楚、输入

元素的点击:.click()
内容的清楚: .clear()
内容的输入: send_keys(“测试”)

from selenium import webdriver
import time
# 打开浏览器
driver = webdriver.Edge()
# 设置浏览器最大化
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 定位搜素框
sercah_element = driver.find_element_by_id('kw')
# 输入内容
sercah_element.send_keys("九阳真经")
time.sleep(3)
# 先将之前输入的内容,清除掉
sercah_element.clear()
time.sleep(3)
# 再次给搜索框输入
sercah_element.send_keys('乾坤大挪移')
time.sleep(3)
# 点击 百度一下
driver.find_element_by_id('su').click()

二、submit提交表单

submit:可以用于表单的提交,可以在某些时候达到和clik互换的效果

from selenium import webdriver
import time
# 打开浏览器
driver = webdriver.Edge()
# 设置浏览器最大化
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 定位搜素框
sercah_element = driver.find_element_by_id('kw')
# 输入内容
sercah_element.send_keys("九阳真经")
# 直接使用submit进行提交
sercah_element.submit()

三、其他的方法

  • size: 返回元素的尺寸。

1.打开浏览器

driver = webdriver.Edge()

2.设置浏览器最大化

driver.maximize_window()

3.设置隐式等待

driver.implicitly_wait(10)

4.打开网页

driver.get(“http://www.baidu.com“)

5.定位搜素框

sercah_element = driver.find_element_by_id(‘kw’)

6.输入内容

sercah_element.send_keys(“九阳真经”)

7.返回搜素框元素的大小 返回 {‘height’: 38, ‘width’: 503}

print(sercah_element.size)

- text: 获取元素的文本。```pythonfrom selenium import webdriverimport time# 打开浏览器driver = webdriver.Edge()# 设置浏览器最大化driver.maximize_window()# 设置隐式等待driver.implicitly_wait(10)# 打开网页driver.get("http://www.baidu.com")time.sleep(2)# 获取 hao123 按钮的文本信息button_element = driver.find_element_by_css_selector('a[href="https://www.hao123.com?src=from_pc"]').textprint(button_element)

8.获取 百度一下 这个按钮元素的 value属性的值

  from selenium import webdriverimport time# 打开浏览器driver = webdriver.Edge()# 设置浏览器最大化driver.maximize_window()# 设置隐式等待driver.implicitly_wait(10)# 打开网页driver.get("http://www.baidu.com")time.sleep(2)# 获取 百度一下 这个按钮元素是否可见button_element = driver.find_element_by_id('su')# 一般使用场景,有时候页面会有弹窗,我们可以判断,如果弹窗可见(弹窗显示出来了),则就需要处理弹窗print(button_element.is_displayed())

9.鼠标事件

在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。ActionChains 类提供了鼠标操作的常用方法:

  • perform(): 执行所有 ActionChains 中存储的行为;
  • context_click(): 右击;
  • double_click(): 双击;
  • drag_and_drop(): 拖动;
  • move_to_element(): 鼠标悬停。
from selenium import webdriver
# 导入ActionChains这个类
from selenium.webdriver.common.action_chains import ActionChains
import time
# 打开浏览器
driver = webdriver.Edge()
# 设置浏览器最大化
driver.maximize_window()
# 设置隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
time.sleep(2)
# 定位到设置
st_button = driver.find_element_by_id('s-usersetting-top')
# 设置鼠标悬停
# perform()执行前面的操作
# ActionChains(打开的浏览器对象,driver).move_to_element(悬停的元素).perform()
ActionChains(driver).move_to_element(st_button).perform()

10.键盘事件

  • send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  • send_keys(Keys.SPACE) 空格键(Space)
  • send_keys(Keys.TAB) 制表键(Tab)
  • send_keys(Keys.ESCAPE) 回退键(Esc)
  • send_keys(Keys.ENTER) 回车键(Enter)
  • send_keys(Keys.CONTROL,’a’) 全选(Ctrl+A)
  • send_keys(Keys.CONTROL,’c’) 复制(Ctrl+C)
  • send_keys(Keys.CONTROL,’x’) 剪切(Ctrl+X)
  • send_keys(Keys.CONTROL,’v’) 粘贴(Ctrl+V)
  • send_keys(Keys.F1) 键盘 F1
  • ……
  • send_keys(Keys.F12) 键盘 F12
from selenium import webdriver
# Keys类才能调用键盘
from selenium.webdriver.common.keys import Keys
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 定位输入框
serach_box = driver.find_element_by_id('kw')
# 输入内容
serach_box.send_keys("seleniummABC")
time.sleep(3)
# 删除多余的m   调用的删除键
# Keys.BACK_SPACE只能删除一个字母,要删除多个字母,则需要乘机
serach_box.send_keys(4*Keys.BACK_SPACE)

查找元素

selector = driver.find_element_by_css_selector('input[value="百度一下"]')

11.获取断言信息

断言其实就是为了判断这个操作是否成功,
通过文本信息

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 定位搜索框
serach_box = driver.find_element_by_id('kw')
# 输入内容
serach_box.send_keys("python")
# 调用回车键
serach_box.send_keys(Keys.ENTER)
time.sleep(3)
# 回去搜索出来的第一页的所有内容标题
# find_elements_by_xpath 如果定位元素的方法显示的是elements,多个元素存在一个列表中
titles = driver.find_elements_by_xpath('//div[@id="content_left"]//h3')
# 由于获取的结果是一个列表,要获取内容,则必须遍历列表,一个一个获取
for t in titles:# 获取文本信息print(t.text)

根据title信息做断言

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 定位搜索框
serach_box = driver.find_element_by_id('kw')
# 输入内容
serach_box.send_keys("python")
# 调用回车键
serach_box.send_keys(Keys.ENTER)
time.sleep(3)
# 获取网页标题  python_百度搜索
print(driver.title)

根据url判断

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 定位搜索框
serach_box = driver.find_element_by_id('kw')
# 输入内容
serach_box.send_keys("python")
# 调用回车键
serach_box.send_keys(Keys.ENTER)
time.sleep(3)
# 获取网页标题  python_百度搜索
# print(driver.title)
# 获取当前网页的url
print(driver.current_url)

12.设置元素等待

为了解决页面加载太慢,而代码执行过快,元素定位不到的问题

  • 强制等待

    time.sleep(4) 这个是python中自带的日期时间模块完成的

  • 隐式等待

    driver.implicitly_wait(10)
    

    隐式等待,指针之后的页面所有内容都有效,上面写了10,指的是10s,判断如果某个元素没有加载出来,最大超时时间是10s,

    如果在 第4s就加载出来,那就继续往后执行

  • 显示等待

    显示等待设置的时候,需要是给每一个元素单独设置,偶尔有个元素由于业务需要加载时间比较长,则可以给其单独设置显示等待

from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 在显示等待的时候,元素定位方式需要使用By加载from selenium.webdriver.common.by import By# 设置显示等待from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECimport time# 打开浏览器driver = webdriver.Edge()
driver.maximize_window()# 隐式等待driver.implicitly_wait(10)# 打开网页driver.get([http://www.baidu.com](http://www.baidu.com/))
"""
WebDriverWait(浏览器driver, 最大超时时间, 轮询时间)
EC.presence_of_element_located() 里面接受的是元素定位方式和具体的表达式,要使用元组的形式传入
By.ID指的就是.find_element_by_id('kw')
"""
# 定位搜索框
serarch_obj = WebDriverWait(driver, 5, 0.6).until(EC.presence_of_element_located((By.ID,'kw')))
# 输入内容
serarch_obj.send_keys("hello")
# 设置提交
# serarch_obj.submit()
serarch_obj.send_keys(Keys.ENTER)

13.多窗口切换

浏览器打开的窗口其实会有一个叫句柄的概念。句柄就类似于每一个标签页的id一样,是唯一的

方式一:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 搜索
obj = driver.find_element_by_id('kw')
obj.send_keys("马蓉")
# 回车
obj.send_keys(Keys.ENTER)
# 获取标签页句柄
windowhandle = driver.current_window_handle
print(windowhandle)
# 点击 马蓉百度百科
driver.find_element_by_xpath('//div[@id="content_left"]/div[2]//h3/a').click()
# 强制等待
time.sleep(3)
# 获取当前浏览器的所有窗口的句柄,获取回来的窗口句柄放在了一个列表中
headles = driver.window_handles
print(headles)
# 根据句柄进行切换
for head in headles:# 如果窗口句柄,不等于打开的第一句柄,则就是第二个if head != windowhandle:driver.switch_to.window(head)
# 点击 编辑 按钮
driver.find_element_by_xpath('//dd[@data-pid="0"]/a[2]').click()

方式二:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("http://www.baidu.com")
# 搜索
obj = driver.find_element_by_id('kw')
obj.send_keys("马蓉")
# 回车
obj.send_keys(Keys.ENTER)
# 点击 马蓉百度百科
driver.find_element_by_xpath('//div[@id="content_left"]/div[2]//h3/a').click()
# 强制等待
time.sleep(3)
# 获取当前浏览器的所有窗口的句柄,获取回来的窗口句柄放在了一个列表中
headles = driver.window_handles
print(headles)
# 根据下标进行句柄切换,获取回来的时候,窗口的句柄是一个列表,列表下标为-1的元素则是最新打开的窗口句柄,下标为0的是第一个
driver.switch_to.window(headles[-1])
# 点击 编辑 按钮
driver.find_element_by_xpath('//dd[@data-pid="0"]/a[2]').click()

14.表单切换

from selenium import webdriver
import time
# 打开浏览器
driver = webdriver.Edge()
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 打开网页
driver.get("https://mail.163.com/")
# iframe表单切换
'''
switch_to.frame() 中默认可以写 该iframe标签的id和name属性的值,但是id和name要唯一
还可以通过其他的定位方式,定位到该iframe标签,然后将定位到iframe标签对象传入给switch_to.frame()
'''
# 通过xpath的方式定位iframe标签
iframe_element = driver.find_element_by_xpath('//div[@id="loginDiv"]/iframe')
# 切换
driver.switch_to.frame(iframe_element)
time.sleep(3)
# 定位邮箱输入框             auto-id-1650273027369
driver.find_element_by_css_selector('input[name="email"]').send_keys("Auguses")
# 密码
driver.find_element_by_css_selector('input[name="password"]').send_keys("waedwaeds")
# 点击 登录 按钮
driver.find_element_by_id('dologin').click()
time.sleep(2)
# 由于上面登录的时候邮箱和密码,是在内存子页面中,所以通过iframe已经切换进去了,而 vip 又在最外层页面,所以要切换到最外层
driver.switch_to.default_content()
# 点击 vip
driver.find_element_by_css_selector('a[href="https://vipmail.163.com/?from=fmail"]').click()

python自动化测试selenium浏览器驱动webdriver常见方法相关推荐

  1. python中selenium模块驱动谷歌详解

    python中selenium模块驱动谷歌详解 Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中 ...

  2. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  3. 用Python解析XML的几种常见方法的介绍

    这篇文章主要介绍了用Python解析XML的几种常见方法,包括快速的使用ElementTree模块等方法的实例介绍,需要的朋友可以参考下 一.简介 XML(eXtensible Markup Lang ...

  4. 【python】python列表去重的5种常见方法实例

    Python编程过程中经常会遇到列表去重的问题,下面这篇文章主要给大家介绍了python列表去重的5种常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下 前言 列表去重在python实际运 ...

  5. python中webdriver_浅谈python中selenium库调动webdriver驱动浏览器的实现原理

    最近学web自动化时用到selenium库,感觉很神奇,遂琢磨了一下,写了点心得. 当我们输入以下三行代码并执行时,会发现新打开了一个浏览器窗口并访问了百度首页,然而这是怎么做到的呢? 1 from ...

  6. python+selenium浏览器驱动(chrome,Firefox,IE)下载与封装

    自动化介绍 自动化分为手动自测试和自动化测试,想要转变需要一个思维过程,自动化通俗来讲是一些重复性操作,这要可以用代码来驱动. Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的 ...

  7. selenium3浏览器驱动安装设置方法

    一.下载浏览器驱动 1.主流浏览器驱动下载地址 Chrome浏览器驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/home Fi ...

  8. selenium浏览器驱动下载安装及使用

    学习selenium过程中,需安装浏览器驱动,具体学习小结如下: 一.安装浏览器驱动:https://blog.csdn.net/dave_haijie/article/details/5489322 ...

  9. 爬虫:Chrome、Firefox 、IE、Selenium浏览器驱动下载安装

    Chrome webdriver下载 Chrome Webdriver 下载地址:https://chromedriver.storage.googleapis.com/index.html     ...

  10. Firefox浏览器驱动GeckoDriver安装方法

    python中常用selenium爬取动态渲染网页,这个过程之中需要安装浏览器驱动,这次以Firefox(火狐)浏览器为例,安装其驱动Geckodriver 1.下载Geckodriver 下载地址: ...

最新文章

  1. 算法分析赛:从数据中挖掘价值,72万奖金,DCIC 2020 大数据赛道来了!
  2. 奇虎360不正当竞争官司不断
  3. python非官方的二进制扩展包下载地址
  4. nginx负载均衡集群
  5. logrotate测试_使用 logrotate 对 apache/nginx 日志切割
  6. 系统架构师 项目经理 哪个更有前景_中央空调加地暖与五恒系统,哪个更省钱?...
  7. wince导航_宁可用手机导航,也不用汽车导航?
  8. 一个Setup Factory的Lua脚本
  9. MSMQ 和 MQTT
  10. WIN8禁用休眠功能
  11. 不同版本操作系统和数据库的之间链接,和操作
  12. 12个Java实践项目:练完变学神
  13. HTML 拖放功能 - DragDrop
  14. 百度计算机调试员论文,基于西门子工业软件的仿真专业系统设计一阶惯性加纯滞后对象百度精.doc...
  15. PRTG - Paessler Router Traffic Grapher 6.0.5.516/517 软件试用
  16. java selector 源码_Java NIO——Selector机制源码分析---转
  17. 全面解读信创行业 关注国产操作系统
  18. ios 7.x.x 不越狱添加输入词库
  19. 海康大华安防网络摄像头Onvif、RTSP视频流媒体服务解决方案EasyNVR如何针对运营商方案进行异网卡顿问题处理
  20. 通过ThreadPoolExecutor与ForkJoinPool比较,分别对比其execute ,submit 等方法提交线程池任务的区别,来深入理解线程池及并发编程

热门文章

  1. 看了一会cmd格式化U盘,操作慎重
  2. 解决visual studio 2010下warning LNK4099 PDB vc100.pdb was not found问题
  3. Vi/Ex编辑器教程[4]
  4. 程序员在开发各阶段专属表情包汇总
  5. iOS小技巧总结,有你不知道的么
  6. swiper 实现移动端两侧露一半轮播图
  7. 继昆明、杭州、南昌地铁后,鸿雁照明再获郑州地铁千万大单!
  8. 在中国搞技术只能混碗饭吃,没有太大希望(转),自励
  9. 用 PyTorch 进行深度学习:60 分钟闪电战——01.什么是 PyTorch?
  10. Java 8 函数式替换if else动态执行实现代码