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. HTML5移动开发之路(1)——jqMobi中Side Menu实现(类似人人网)

    记得以前在做Native App的时候类似于人人网侧边滑动的效果非常的热,很多app仿照该效果进行开发,在jqMobi中也有类似的效果被称为Side Menu.下面我们来一步一步实现该效果. 首先新建 ...

  2. 为何要做seo关键词排名

    http://www.wocaoseo.com/thread-229-1-1.html 武汉seo百度指数在150左右,做seo的同仁们都知道这样的一件事情. 真正搜索武汉seo关键词能作为潜在客户的 ...

  3. QString 字符串操作

    Qt QString字符串分割.截取(转载) 在做项目中不可避免的会使用到一串字符串中的一段字符,因此常常需要截取字符串. 有两种方式可以解决这个问题: 方法一:QString分割字符串: QStri ...

  4. Python Selenium 之数据驱动测试的实现

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  5. Git深入浅出使用教程:Git安装、远程控制、常用命令(全)

    一.软件安装 1.先安装[Git-2.24.1.2-64-bit.exe]软件.(官网下载的很慢,可以在百度云盘下载我的) 链接:https://pan.baidu.com/s/1uoIS9DWSBp ...

  6. 多层v-for循环嵌套导致v-model双向绑定失败,页面不重新渲染

    数据格式是数组包对象,对象里面再包数组,数组再包对象,如下: 外层for遍历出editInfo里面所有的属性,内层for遍历Options. 最终实现样子 两个问题: 1.点加减按钮的时候往optio ...

  7. LuaProfiler

    Lua Profiler机制的源码解析 https://www.jianshu.com/p/f6606b27e9de

  8. 基于模板特化的Lua自动绑定系统

    LuaBind http://www.rasterbar.com/products/luabind.html http://blog.sina.com.cn/s/blog_646817c00100gk ...

  9. 100个高频Spring面试题

    译   原文:https://www.javacodegeeks.com/2014/05/spring-interview-questions-and-answers.html A:Spring概览 ...

  10. 【Go语言入门系列】(九)写这些就是为了搞懂怎么用接口

    [Go语言入门系列]前面的文章: [Go语言入门系列](六)再探函数 [Go语言入门系列](七)如何使用Go的方法? [Go语言入门系列](八)Go语言是不是面向对象语言? 1. 引入例子 如果你使用 ...