web页面:浏览器操作
鼠标操作:双击、右击、悬停、拖拽、按键管理
用户输入操作:单选,多选,select,快捷键
文件上传:JS去修改网页
一.鼠标操作
1. 悬停
# 鼠标悬停(哪个元素) el = browser.find_element(By.XPATH, "//a[contains(text(),'HTML / CSS')]") # 悬停,ActionChains下面的动作方法必须要再机上perform()才能生效 ActionChains(browser).move_to_element(el).perform()
进行元素定位时,先将窗口最大化,防止元素不可见。
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import Byclass TestDemo:def test_01(self):with webdriver.Chrome(executable_path='chromedriver96.exe') as browser:browser.implicitly_wait(10)browser.get("https://www.runoob.com/html/html-tutorial.html")# 最大化窗口browser.maximize_window()# 鼠标悬停(哪个元素)el = browser.find_element(By.XPATH, "//a[contains(text(),'HTML / CSS')]")# 悬停,ActionChains下面的动作方法必须要再机上perform()才能生效ActionChains(browser).move_to_element(el).perform()time.sleep(5)
运行后,浏览器效果:
2.双击
# 鼠标悬停(哪个元素) el = browser.find_element(By.XPATH, "//a[contains(text(),'HTML / CSS')]") # 双击 ActionChains(browser).double_click(el).perform()
3.右击
# 鼠标悬停(哪个元素) el = browser.find_element(By.XPATH, "//a[contains(text(),'HTML / CSS')]") # 右击 ActionChains(browser).context_click(el).perform()
4.拖拽
# 鼠标拖拽(开始元素,结束元素) el_start = browser.find_element('id', "draggable") el_end = browser.find_element('id', "droptarget") # 拖拽,ActionChains下面的动作方法必须要再机上perform()才能生效 ActionChains(browser).drag_and_drop(el_start, el_end).perform()
import time
from selenium import webdriver
from selenium.webdriver import ActionChainsclass TestDemo:def test_01(self):with webdriver.Chrome(executable_path='chromedriver96.exe') as browser:browser.implicitly_wait(15)browser.get("https://demos.telerik.com/kendo-ui/dragdrop/index")# 最大化窗口browser.maximize_window()# 鼠标拖拽(开始元素,结束元素)el_start = browser.find_element('id', "draggable")# 把该元素挪动到可视范围之内el_start.location_once_scrolled_into_viewel_end = browser.find_element('id', "droptarget")# 拖拽,ActionChains下面的动作方法必须要再机上perform()才能生效ActionChains(browser).drag_and_drop(el_start, el_end).perform()time.sleep(5)
二.用户输入
1.send_keys()
输入字符,查看源码可知send_keys所需参数是不定长参数
browser.find_element('id', 'kw').send_keys('python')
2.单选/多选/select
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>py44</title>
</head>
<body>
<form><div>单选:<input type="radio" name="gender" value="male">男<input type="radio" name="gender" value="female">女</div><div>多选:<input type="checkbox" name="checkbox" value="a">a<input type="checkbox" name="checkbox" value="b">b<input type="checkbox" name="checkbox" value="c">c</div><div><select name="myselect"><option>选项1</option><option>选项2</option><option>选项3</option></select></div>
</form>
</body>
</html>
想要引用本地创建的html网页时,需要在本地文件夹内打开html文件(谷歌浏览器),获取浏览器的地址,不要在pycharm中打开(否则不能通过selenium打开)。
import time
from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestDemo:def test_01(self):with webdriver.Chrome(executable_path='chromedriver96.exe') as browser:browser.implicitly_wait(15)browser.get("file:///D:/PycharmProjects/day37_%E6%B5%8F%E8%A7%88%E5%99%A8%E6%93%8D%E4%BD%9C/radio.html")# 最大化窗口browser.maximize_window()# 单选browser.find_element(By.XPATH, "//input[@value='female']").click()# 多选框browser.find_element(By.XPATH, "//input[@value='a']").click()browser.find_element(By.XPATH, "//input[@value='c']").click()# 下拉框,避免定位不到下拉框中的内容时,可以先定位最外层元素,一般不需要# browser.find_element(By.NAME, "myselect").click()browser.find_element(By.XPATH, "//option[text()='选项3']").click()time.sleep(3)
运行后,浏览器效果:
3.快捷键/组合键
# Keys.ENTER表示回车,更多快捷键查看Keys源代码 browser.find_element('id', 'kw').send_keys('python', Keys.ENTER) # 第二种情况,ctrl+c (+ctrl松开),ctrl+v 组合键 actions = ActionChains(browser) # 复制粘贴 actions.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform() actions.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform() # 复制粘贴会将原本内容覆盖 actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
import time
from selenium import webdriver
from selenium.webdriver import Keys, ActionChainsdef test_hotkey():url = 'https://www.baidu.com/'with webdriver.Chrome(executable_path='chromedriver96.exe') as browser:browser.implicitly_wait(15)browser.get(url)# 最大化窗口browser.maximize_window()# Keys.ENTER表示回车# browser.find_element('id', 'kw').send_keys('python', Keys.ENTER)browser.find_element('id', 'kw').send_keys('python')# 第二种情况,ctrl+c (+ctrl松开),ctrl+v 组合键actions = ActionChains(browser)# 复制粘贴actions.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()actions.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()# 复制粘贴会将原本内容覆盖actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()time.sleep(5)
web页面:浏览器操作相关推荐
- 简述php和web交互过程,PHP与Web页面交互操作实例分析
PHP与Web页面交互操作实例分析,表单,数组,参数,字符串,属性 PHP与Web页面交互操作实例分析 易采站长站,站长之家为您整理了PHP与Web页面交互操作实例分析的相关内容. 本文实例讲述了PH ...
- elasticsearch基础6——head插件安装和web页面查询操作使用、ik分词器
文章目录 一.基本了解 1.1 插件分类 1.2 插件管理命令 二.分析插件 2.1 es中的分析插件 2.1.1 官方核心分析插件 2.1.2 社区提供分析插件 2.2 API扩展插件 三.Head ...
- 关于运行本地web页面浏览器出现安全拦截提示问题
解决方案大概有两种: 1.设置IE的选项:"工具"->"internet 选项"->"高级"->"安全" ...
- Solr 16 - Solr中添加、更新、删除数据的几种方式 (在URL上或Web页面中操作)
目录 1 添加/更新索引数据 1.1 JSON格式的操作 1.2 XML格式的操作 2 删除索引数据 2.1 删除符合特定条件的数据 2.2 删除指定ID的数据 2.3 删除全部索引数据 3 在doc ...
- 手机端 html 怎么分享到朋友圈,【Web前端问题】移动web页面如何实现分享到微信、QQ等分享功能?...
移动web页面(浏览器打开的web应用,非App内置的Web页面)内有分享按钮,点击可分享到朋友圈,微信好友,QQ...... 据说是使用相关插件,求指导! 回答: 如果不是app内置web页面,只能 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...
http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...
- 浏览器安全——Web页面安全浏览器网络安全(HTTPS)浏览器系统安全
一.Web页面安全 同源和跨域: 什么是同源?如果两个页面拥有相同的协议(scheme).域名(host)和端口(port)(http默认port80,https默认端口号443),那么这两个页面具有 ...
- 【护眼阅读】PC端通过主流常用浏览器打开本地WEB页面阅读本地TXT小说
自用-通过WEB页面阅读本地小说,生成章节导航,设置字色和背景色达到护眼目的,HTML+CSS+JS 章节导航 需求分析 HTML代码 CSS代码 JS代码 总结 章节导航 从分析需求入手,查找资料, ...
- 设置Web页面试用手机浏览器(iphone)
如果WEB页面没有经过特殊处理,在iphone浏览器上看页面会变的很小.可以在HEAD里用 META设置页面试用iphone浏览器, 设置如下: <meta content="widt ...
- java 情况浏览器缓存_JavaWeb禁止浏览器缓存当前Web页面的方法
所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取. 虽然浏览器提供的缓存功能可以有效 ...
最新文章
- 2022-2028年中国盲盒产业研究及前瞻分析报告
- Linux下VS Code中C/C++开发环境的includePath设置
- android backlight
- 牛顿-拉夫逊法进行潮流计算matlab源程序
- Electron项目怎样打包成桌面exe应用
- 双网卡主机配置oracle监听,VirtualBox设置双网卡实现虚机上网及主宿机互访
- SpringMVC对日期类型的转换
- 【JUnit】Junit命令行执行、参数化执行、Main方法执行
- 水文勘测工比赛计算机基本应用,第四届全国水文勘测工大赛内业操作试题A卷.doc...
- 准备创业或刚创业的朋友必读
- 15个常用的javaScript正则表达式
- 在Windows下编译OpenSSL(VS2005)
- 用友U8审批流相关开发
- apicloud开发之使用usb真机同步到安卓虚拟机
- Matlab实现二维数字图像相关(2D Digital Image Correlation, 2D-DIC)【ADIC2D代码复现及原理介绍】
- ES6三种暴露方法详解
- Unity特效制作规范
- rn react native PanResponder手势动画 实现窗口拖动 滑动动画 Animated
- Android轻松实现高效的启动页
- vue 报错avoid mutating a prop directly since the value will be overwritten whenever