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()

定位方式

  1. 分类:

    ​ element和element(返回列表)

  2. 定位方式

    # 利用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)
  3. 优先级

      	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的方式

  1. 免于登录,顺便绕过验证码

    driver.add_cookie({"name":"XXX","value":"XXX"})
  2. 通过查看接口的方式来获取所有登录时获得的cookie;

图像识别技术(OTP引擎)

屏蔽验证码

文件上传

  1. 通过send_keys()

    driver.find_element_by_id("Idvalue").send_keys(path)
    driver.find_element_by_xpath("").click()
  2. 通过Pykeyboara,需要依次安装pyHook和PyUserInput

  3. 使用sikulik的jar包

  4. 其他,比如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")

截图

  1. 方法一:

    driver.get_screenshot_as_file(path+"name.png")
  2. 方法二:

    # 遇到弹窗就截图
    driver.save_screenshot(path+"name.png")
  3. 方法三:

    # 保存的是base64()格式的文件值,html测试报告里插入图片会用到
    s=driver.get_screenshot_as_base64()
  4. 方法四:

    # 保存二进制文件
    S = driver.get_screenshot_as_png()

js注入

移动滚动条

  1. 方式1(只支持有ID的滚动条):

    js = "var q=document.documentElement.scrollTop=100"
    js_n = "var q=document.documentElement.scrollTop=0"
    driver.execute_script(js_n)
  2. 方式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工具基本使用的更多相关文章

  1. WEB自动化(Python+selenium)的API

    在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                         ...

  2. 【python+selenium的web自动化】- Selenium WebDriver原理及安装

    简单介绍 selenium ​ selenium是一个用于测试web网页的自动化测试工具,它直接运行在浏览器中,模拟用户的操作.

  3. 技术分享 | Web自动化之Selenium安装

    Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现人为的错误,也比较费时间.因此,将这些任务自动化,就可以消除人为因素.S ...

  4. web自动化之selenium

    一.Selenium(http://www.selenium.org/) Web自动化测试工具.它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里 ...

  5. web自动化之selenium(二)

    selenium自动化测试框架 一.什么是自动化测试 利用软件(或者说机器代替人)实现全部或者部分测试任务的过程 二.为什么要进行自动化测试 ​ 自动化测试可以完成许多手工测试无法实现或难以实现的功能 ...

  6. web自动化之selenium(一)

    自动化搭建环境 1.自动搭建(一) #安装 pip install webdriver-helper 1.1示例 from webdriver_helper import * #get_webdriv ...

  7. web自动化之selenium(六)利用坐标点定位

    这是通过第三发库实现对元素的定位,因为在无法定位元素的时候,只能通过外部来定位,此时就可以使用pyautogui模块,操作鼠标,模拟人进行操作 # 使用注意事项,不要过于的依赖它 1.使用时需要在通过 ...

  8. web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载

    一.安装selenium 命令安装selenium库 :pip  install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...

  9. web自动化:selenium原理和元素定位(一)

    一. Selenium2 WebDriver 当Selenium2.x提出了WebDriver的概念后,它提供了完全另外的一种方式与浏览器交互 那就是利用浏览器原生的API,封装成一套更加面向对象的S ...

  10. web自动化,selenium环境配置

    1,首先我们需要在python编译器中添加selenium插件,我用的是pycharm 点击下方的Terminal,然后在命令行输入: pip install selenium 也可以在设置里面手动添 ...

随机推荐

  1. 简单解析PAT、PMT的程序

    刚开始学习有关TS.PAT.PMT方面的内容,参考了别人的一些程序,然后写了一个简单的解析TS的小程序.如果有地方错误,请发邮件给我843036544@qq.com. #include<stdi ...

  2. 4.oracle sql*plus常用命令

    一.sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1).sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户 ...

  3. Java 8新特性(二):Stream API

    本篇文章继续介绍Java 8的另一个新特性--Stream API.新增的Stream API与InputStream和OutputStream是完全不同的概念,Stream API是对Java中集合 ...

  4. 第四篇 Scrum冲刺博客

    一.会议图片 二.项目进展 成员 完成情况 今日任务 冯荣新 商品底部工具栏 购物车列表 陈泽佳 渲染搜索结果,防抖的实现 静态结构 徐伟浩 未完成 商品信息录入 谢佳余 未完成 搜索算法设计 邓帆涛 ...

  5. Reinforcement Learning, Fast and Slow

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1 DeepMind, London, UK2 University College London, London, UK3 Prince ...

  6. 深入浅出 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳

    Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...

  7. 23种设计模式 - 状态变化(Memento备忘录 - State)

    其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 状态变化 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的 ...

  8. windows环境安装vue-cli及webpack并创建vueJs项目

    1. 安装node.js 2. 如果安装的是旧版本的 npm,可以通过 npm 命令来进行版本升级,命令如下: npm install npm -g npm网站服务器位于国外,所以经常下载缓慢或出现异 ...

  9. Gama Space 和 Linear Space 学习

    可以参考: 1.http://blog.csdn.net/ngrandmarch/article/details/46407017 2.http://blog.csdn.net/candycat199 ...

  10. Linux服务器被入侵后的处理过程

    突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况. 可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 SSH 登陆系统,不幸的事,由于网络堵 ...