关于python中selenium一些知识点
selenium几种元素操纵方法
切换iframe层
#切换至xx iframe层
driver.switch_to.frame("name and id")
# 切回主HTML层
driver.switch_to.default_content()
# 切回上一层
driver.switch_to.parent_frame()
因元素不在屏幕上点击不到元素
# 先定位到元素
element = driver.find_element(By.CSS_SELECTOR,"div.ivu-steps-item.ivu-steps-status-process > div.ivu-steps-main > div > div > div > span")
# 使用JS方法点击元素
driver.execute_script("arguments[0].click();", element)
上传图片和日历方法
# 定位到input标签元素
driver.find_element(By.CSS_SELECTOR, ".ivu-upload.ivu-upload-drag>input").send_keys("D:\selenium_auto\error_test.png")
# 方法2
pip install pypiwin32
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys(r'文件路径'+'\n')
操纵浏览器原生弹出对话框
# 触发alert
driver.find_element(By.ID,"xx").click()
al = driver.switch_to.alert
# 取出alert上的字符
al.text
# 切换到alert上,点击确定
al.accept()
# 点击取消
al.dismiss()
# 操作输入框
al.send_keys("这是一段内容")
截屏
# 当有alert弹框时不能截图,浏览器处于阻塞状态
driver.get_screenshot_as_file(r"D\alert.png")
切换浏览器窗口
windows = driver.window_handles
driver.switch_to.window(windows[-1])
常用操作
# 浏览器返回
driver.back()
# 浏览器前进
driver.forward()
# 浏览器刷新
driver.refresh()
# 窗口最大化
driver.maximize_window()
# 设置窗口大小
driver.set_window_size(800,1000)
# 拿到当前窗口大小
driver.get_window_size()
Select对象选择框
select = Select(driver.find_element(By.ID,"xxx"))
select.select_by_visible_text("06:00--12:00")
显示鼠标悬停后的元素
from selenium.webdriver.common.action_chains import ActionChains
input1 = driver.find_element(By.CSS_SELECTOR,"div.com-title-content ")
input2 = driver.find_element(By.CSS_SELECTOR,"div.com-title-content ")
input3 = driver.find_element(By.CSS_SELECTOR,"div.com-title-content ")
ac = ActionChains(driver)
# 连续输入
ac.click(input1).send_keys("input1").click(input2).send_keys("input3").click(input3).send_keys("input3")
# 鼠标停留
move = driver.find_element(By.CSS_SELECTOR,"鼠标停留的位置")
ac.move_to_element(move).perform
# console控制台输入代码:
setTimeout(function(){debugger},3000)
move_to = driver.find_element(By.CSS_SELECTOR,"目标位置")
页面滚动
driver.execute_script("scrollBy(0,2000)")
键盘操作
import win32api
import win32con
# 有个小坑,滚动之前要先定位到当前页面
driver.find_element(By.CSS_SELECTOR,"div.com-title-content ").click()
win32api.keybd_event(win32con.VK_DOWN, 0) # 按↓键盘
win32api.keybd_event(win32con.VK_RIGHT, 0) # 按→键盘
win32api.keybd_event(win32con.VK_RETURN, 0) # 按回车键盘
关于python中selenium一些知识点的更多相关文章
- python中selenium操作下拉滚动条方法汇总
UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等:但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了. 比如下面这样一个网页 ...
- python中selenium操作下拉滚动条方法
场景:在当前显示的页面元素不可见,拖动下拉条后元素就出来了. 解决方法: 在python中有几种方法解决这种问题,简单介绍下,给需要的人: 方法一)使用js脚本直接操作,方法如下: #将页面滚动条拖到 ...
- Python中Selenium模块的使用
目录 Selenium的介绍.配置和调用 Selenium的配置 Selenium的调用 Selenium的使用 定位 定位元素的使用 定位下拉标签元素 在iframe框架之间切换 上传文件 Webd ...
- Python 中 selenium 库
目录 selenium 基础语法 一. 环境配置 1. 安装环境 2. 配置参数 3. 常用参数搭配 4. 分浏览器启动 二. 基本语法 1. 元素定位 2. 控制浏览器操作 3. 操作元素的方法 3 ...
- python中的小知识点
这里是一些小知识点的汇集,为的是以后查找的方便. 行与缩进: 物理行:实际看到的代码行数. 逻辑行:在意义上的函数(即解释器执行的行数) 如果一个物理行中包含了多个逻辑行,则每个逻辑行之间需要用分号 ...
- 浅谈python中selenium库调动webdriver驱动浏览器的实现原理
最近学web自动化时用到selenium库,感觉很神奇,遂琢磨了一下,写了点心得. 当我们输入以下三行代码并执行时,会发现新打开了一个浏览器窗口并访问了百度首页,然而这是怎么做到的呢? from se ...
- Python中Selenium模拟JQuery滑动解锁实例
滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. https://www.helloweba.com/demo/2017 ...
- python中线程的知识点
什么是线程? 程序的执行线路.每个进程默认有一条线程.线程包含了程序的具体步骤. 多线程就是一个进程中有除主线程(默认线程)外还有多个线程. 线程与进程的关系(进程包含线程,而线程依赖进程存在) 1. ...
- Python中函数的知识点
1.函数的定义与调用 2.函数的参数 3.函数的返回值 1. 1.1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 1.2.定义一个函数: 规则: 函数代码块以 ...
随机推荐
- 三面面试官:运行 npm run xxx 的时候发生了什么?
事情是这样的,直接开讲 面试官:npm run xxx的时候,发生了什么?讲的越详细越好. 我(心想,简单啊): 首先,DNS 解析,将域名解析成 IP 地址,然后 TCP 连接,TCP 三次握手.. ...
- 生产环境频繁内存溢出,原来就是因为这个“String类”
摘要:如果在程序中创建了比较大的对象,并且我们基于这个大对象生成了一些其他的信息,此时,一定要释放和这个大对象的引用关系,否则,就会埋下内存溢出的隐患. 本文分享自华为云社区<[高并发]你敢信? ...
- lombok的@builder 不能新建DO对象 Lombok存在的一些问题
1. 实体类加上 lombok的@builder之后 就不能新建对象了,,,构造函数被覆盖了? 加上两个标签之后解决 2.Lombok存在的一些问题 lombok问题 @Builder和@NoArg ...
- lucence 内部结构是什么?
面试官:想了解你的知识面的广度和深度. 解答: Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点.可以 基于这个脉络展开一些. 最近面试一些公司,被问到的关于 Elastics ...
- SpringBoot使用JdbcTemplate批量保存
@Autowired DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationConte ...
- java程序如何确保多线程的运行安全?
线程的安全问题体现在: 原子性:一个或多个操作在CPU执行过程中不被中断的特性 可见性:一个线程对共享变量的修改,另一个线程能立刻看到 有序性:程序执行的顺序按照代码的先后顺序执行 导致线程存在安全问 ...
- css浮动的"巨坑"与完美解决办法
浮动 1 浮动概念 如果想实现网页中排版布局,比如一行内显示对应的标签元素,可以使用浮动属性.浮动可以实现元素并排. 块转行内日块也可以实现一行显示,不过存在空白折叠现象 float 浮动 属性值 描 ...
- springboot-mail发邮件,不需要邮件服务器
很简单 步骤走起-> 1.需要一个邮箱账号,我以163邮箱为例,先开启第三方服务后获得密码,后面用来邮箱登录 2.加入mail 依赖 3.properties配置账号和第三方服务密码(不是邮箱密 ...
- kali Linux 渗透测试 | ARP 欺骗
目录 ARP 欺骗及其原理 ARP 欺骗实施步骤 必备工具安装 nmap 工具 dsniff 工具 driftnet 工具 ettercap 工具 ARP 欺骗测试 ARP 断网攻击 ARP 欺骗(不 ...
- vue常用知识点总结
感谢本文引用链接的各位大佬们,小菜鸟我只是个搬运工 1.谈一谈你理解的vue是什么样子的? vue是数据.视图分离的一个框架,让数据与视图间不会发生直接联系.MVVM 组件化:把整体拆分为各个可以复用 ...