selenium几种元素操纵方法

切换iframe层

  1. #切换至xx iframe层
  2. driver.switch_to.frame("name and id")
  3. # 切回主HTML层
  4. driver.switch_to.default_content()
  5. # 切回上一层
  6. driver.switch_to.parent_frame()

因元素不在屏幕上点击不到元素

  1. # 先定位到元素
  2. element = driver.find_element(By.CSS_SELECTOR,"div.ivu-steps-item.ivu-steps-status-process > div.ivu-steps-main > div > div > div > span")
  3. # 使用JS方法点击元素
  4. driver.execute_script("arguments[0].click();", element)

上传图片和日历方法

  1. # 定位到input标签元素
  2. driver.find_element(By.CSS_SELECTOR, ".ivu-upload.ivu-upload-drag>input").send_keys("D:\selenium_auto\error_test.png")
  3. # 方法2
  4. pip install pypiwin32
  5. import win32com.client
  6. shell = win32com.client.Dispatch("WScript.Shell")
  7. shell.SendKeys(r'文件路径'+'\n')

操纵浏览器原生弹出对话框

  1. # 触发alert
  2. driver.find_element(By.ID,"xx").click()
  3. al = driver.switch_to.alert
  4. # 取出alert上的字符
  5. al.text
  6. # 切换到alert上,点击确定
  7. al.accept()
  8. # 点击取消
  9. al.dismiss()
  10. # 操作输入框
  11. al.send_keys("这是一段内容")

截屏

  1. # 当有alert弹框时不能截图,浏览器处于阻塞状态
  2. driver.get_screenshot_as_file(r"D\alert.png")

切换浏览器窗口

  1. windows = driver.window_handles
  2. driver.switch_to.window(windows[-1])

常用操作

  1. # 浏览器返回
  2. driver.back()
  3. # 浏览器前进
  4. driver.forward()
  5. # 浏览器刷新
  6. driver.refresh()
  7. # 窗口最大化
  8. driver.maximize_window()
  9. # 设置窗口大小
  10. driver.set_window_size(800,1000)
  11. # 拿到当前窗口大小
  12. driver.get_window_size()

Select对象选择框

  1. select = Select(driver.find_element(By.ID,"xxx"))
  2. select.select_by_visible_text("06:00--12:00")

显示鼠标悬停后的元素

  1. from selenium.webdriver.common.action_chains import ActionChains
  2. input1 = driver.find_element(By.CSS_SELECTOR,"div.com-title-content ")
  3. input2 = driver.find_element(By.CSS_SELECTOR,"div.com-title-content ")
  4. input3 = driver.find_element(By.CSS_SELECTOR,"div.com-title-content ")
  5. ac = ActionChains(driver)
  6. # 连续输入
  7. ac.click(input1).send_keys("input1").click(input2).send_keys("input3").click(input3).send_keys("input3")
  8. # 鼠标停留
  9. move = driver.find_element(By.CSS_SELECTOR,"鼠标停留的位置")
  10. ac.move_to_element(move).perform
  11. # console控制台输入代码:
  12. setTimeout(function(){debugger},3000)
  13. move_to = driver.find_element(By.CSS_SELECTOR,"目标位置")

页面滚动

  1. driver.execute_script("scrollBy(0,2000)")

键盘操作

  1. import win32api
  2. import win32con
  3. # 有个小坑,滚动之前要先定位到当前页面
  4. driver.find_element(By.CSS_SELECTOR,"div.com-title-content ").click()
  5. win32api.keybd_event(win32con.VK_DOWN, 0) # 按↓键盘
  6. win32api.keybd_event(win32con.VK_RIGHT, 0) # 按→键盘
  7. win32api.keybd_event(win32con.VK_RETURN, 0) # 按回车键盘

关于python中selenium一些知识点的更多相关文章

  1. python中selenium操作下拉滚动条方法汇总

    UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等:但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了. 比如下面这样一个网页 ...

  2. python中selenium操作下拉滚动条方法

    场景:在当前显示的页面元素不可见,拖动下拉条后元素就出来了. 解决方法: 在python中有几种方法解决这种问题,简单介绍下,给需要的人: 方法一)使用js脚本直接操作,方法如下: #将页面滚动条拖到 ...

  3. Python中Selenium模块的使用

    目录 Selenium的介绍.配置和调用 Selenium的配置 Selenium的调用 Selenium的使用 定位 定位元素的使用 定位下拉标签元素 在iframe框架之间切换 上传文件 Webd ...

  4. Python 中 selenium 库

    目录 selenium 基础语法 一. 环境配置 1. 安装环境 2. 配置参数 3. 常用参数搭配 4. 分浏览器启动 二. 基本语法 1. 元素定位 2. 控制浏览器操作 3. 操作元素的方法 3 ...

  5. python中的小知识点

    这里是一些小知识点的汇集,为的是以后查找的方便. 行与缩进: 物理行:实际看到的代码行数. 逻辑行:在意义上的函数(即解释器执行的行数) 如果一个物理行中包含了多个逻辑行,则每个逻辑行之间需要用分号 ...

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

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

  7. Python中Selenium模拟JQuery滑动解锁实例

    滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. https://www.helloweba.com/demo/2017 ...

  8. python中线程的知识点

    什么是线程? 程序的执行线路.每个进程默认有一条线程.线程包含了程序的具体步骤. 多线程就是一个进程中有除主线程(默认线程)外还有多个线程. 线程与进程的关系(进程包含线程,而线程依赖进程存在) 1. ...

  9. Python中函数的知识点

    1.函数的定义与调用 2.函数的参数 3.函数的返回值   1. 1.1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 1.2.定义一个函数: 规则: 函数代码块以 ...

随机推荐

  1. Nacos配置中心集群原理及源码分析

    Nacos作为配置中心,必然需要保证服务节点的高可用性,那么Nacos是如何实现集群的呢? 下面这个图,表示Nacos集群的部署图. Nacos集群工作原理 Nacos作为配置中心的集群结构中,是一种 ...

  2. Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式表 SQL)

    如前几节所述,Citus 是一个扩展,它扩展了最新的 PostgreSQL 以进行分布式执行.这意味着您可以在 Citus 协调器上使用标准 PostgreSQL SELECT 查询进行查询. Cit ...

  3. zk 节点宕机如何处理?

    Zookeeper 本身也是集群,推荐配置不少于 3 个服务器.Zookeeper 自身也要保 证当一个节点宕机时,其他节点会继续提供服务. 如果是一个 Follower 宕机,还有 2 台服务器提供 ...

  4. 如何在 Mac 上强制退出 App

    同时按住三个按键:Option.Command 和 Esc (Escape) 键.或者,从屏幕左上角的苹果菜单  中选取"强制退出".(这类似于在 PC 上按下 Control- ...

  5. Dubbo 推荐用什么协议?

    dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest://

  6. springboot项目中的日志输出

    #修改默认输出级别,trace < debug < info < warn < errorlogging.level.com.lagou=trace#控制台输出logging. ...

  7. pygame.error: video system not initialized

    在pygame写游戏出现pygame.error: video system not initialized 源代码 import sysimport pygamedef run_game(): py ...

  8. css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”

    一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...

  9. 数据库学习之"清理表内所有数据"

    今天在写定时任务的时候表内的数据都出现了问题,所以用了 1 truncate table 表名 来清空表内的数据

  10. eclipse开发工具之"导入项目"

    1.选择菜单栏"file""下的"import" 2.选择Maven 在选中"Existing Maven Projects",然 ...