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一些知识点的更多相关文章

  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. 几种常用的MOS管参数、应用电路及区别:IRF540N、IRF9540N、IRF9540

    1. IRF540N,N沟道,100V,33A,44mΩ@10V 栅极(Gate-G,也叫做门极),源极(Source-S), 漏极(Drain-D) 漏源电压(Vdss) 100V 连续漏极电流(I ...

  2. 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错

    摘要:在SpringBoot运行测试Mybatis-Plus测试的时候报错的问题分析与修复 本文分享自华为云社区<SpringBoot整合MybatisPlus项目存在Mapper时运行报错的问 ...

  3. 在Unity中用UGUI制作可输入下拉框

    Unity中UGUI制作可输入下拉框 目录 Unity中UGUI制作可输入下拉框 前言 组件分析 制作流程 总结 前言 在搜索引擎以及一些网页中我们常常可以看见这样一种UI控件,看上去是一个输入框,在 ...

  4. SpringBoot 多环境配置文件切换

    背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同 ...

  5. 开启 Spring Boot 特性有哪几种方式?

    1)继承spring-boot-starter-parent项目 2)导入spring-boot-dependencies项目依赖

  6. Java语言的特点有哪些?

    1.简单 Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了.Java语言的简单性主要体现在以下三个方面: 1) Java的风格类似于C++,因而C++程序员是非常熟悉的.从某 ...

  7. @Autowired 注解?

    @Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配. 它的用法和@Required 一样,修饰 setter 方法.构造器.属性或者具有任意名称 和/或多个参数的 PN 方 ...

  8. GC日志浅析

    //java 开发环境,使用HotSpot的虚拟机,64位,windows 开发环境 Java HotSpot(TM) 64-Bit Server VM (25.151-b12) for window ...

  9. 时间工具类之“ JDK1.8中 LocalDate、LocalTime、LocalDateTime、LocalDateTimeUtil四个时间工具类”

    一.使用的原因 在JDK8发布的时候,推出了LocalDate.LocalTime.LocalDateTime这个三个时间处理类,以此来弥补之前的日期时间类的不足,简化日期时间的操作. 在Java8之 ...

  10. 串联型PID,并联型PID与标准型PID简要说明

    PID广泛应用于工业生产各个环节,然而对于不同PID结构会有一些差异,导致在调参时若按照常规的经验调试,结果将会有非常大的不同. 串联型PID(Serial PID) 串联型PID的三个环节由比例,积 ...