Selenium - 浏览器操作
Selenium - 浏览器操作
获取浏览器信息
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 获取当前浏览器名称
print(driver.name)
# 获取当前网页的 URL 地址
print(driver.current_url)
# 获取当前网页的标题
print(driver.title)
# 获取当前网页的源代码
print(driver.page_source)
前进/后退/刷新
from selenium import webdriver
# 浏览器实例化
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 进行百度搜索
driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//input[@id='su']").click()
# 后退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()
窗口大小设置
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 把浏览器窗口最大化
driver.maximize_window()
# 把浏览器窗口最小化
driver.minimize_window()
# 设置浏览器窗口大小,长、宽作为参数传递进去,单位:像素
driver.set_window_size(1366, 768)
# 获取浏览器大小
size = driver.get_window_size()
print(size)
窗口截图
使用函数
get_screenshot_as_file()from selenium import webdriver driver = webdriver.Chrome()
driver.get("http://www.baidu.com") # 保存为本地png图片
# 图片后缀最好为.png,如果是其他的执行的时候会有警告,但不会报错
driver.get_screenshot_as_file("D:\\baidu.png")
使用函数
save_screenshot()from selenium import webdriver driver = webdriver.Chrome()
driver.get("http://www.baidu.com") # 对当前浏览器打开界面进行截图
driver.save_screenshot("D:\\baidu.png")
文件上传
- 上传有两种情况:
- input标签:如果上传组件是一个
input标签,那么定位到元素后,直接使用send_keys()方法就可以上传; - input标签:如果上传组
非input标签,则需要借助第三方工具:第三方库pywin32、第三方工具pyautogui;
- input标签:如果上传组件是一个
input标签
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 定位上传文件元素
input_file = driver.find_element_by_id("xxx")
# 上传文件
input_file.send_keys(r"D:\learn\xx.txt")
非input标签
TODO:还未遇到这种场景,待学习
标签页切换
在页面中点击某个链接之后,可能就会打开一个新的标签页,Chromedriver驱动是不会主动帮我们去切换。多标签页出现后,如果要做下一步操作,需要先切换浏览器标签页。
# 获取全部窗口句柄
handles = driver.window_handles # 获取当前窗口句柄
handle = driver.current_window_handle # 通过句柄切换窗口
driver.switch_to.window(handle) # 打开新的标签页
js = 'window.open("https://www.baidu.com")'
driver.execute_script(js)
实战操作
import time
from selenium import webdriver # 启动Chromedriver,并与Chromedriver开启会话
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com") # 点击新闻,新建一个tab标签页
driver.find_element_by_xpath("//div[@id='s-top-left']/a[1]").click()
time.sleep(2) # 获取当前标签页句柄
win = driver.current_window_handle
print('当前标签页:', win) # 获取当前所有标签页句柄
# 返回的是一个列表,按照标签页打开的顺序
wins = driver.window_handles
print('所有标签页1:', wins) # 切换到第1个标签页
driver.switch_to.window(wins[0])
time.sleep(2) # 打开新的标签页
js = 'window.open("https://www.baidu.com")'
driver.execute_script(js)
time.sleep(2) # 再次获取当前所有标签页句柄
wins = driver.window_handles
print('所有标签页2:', wins) # 关闭当前标签页
driver.close()
# 关闭浏览器,kill掉chromedriver进程
driver.quit()
封装窗口切换,实现切换到下一个窗口和上一个窗口的功能
driver = webdriver.Chrome() def window_forward(driver):
"""自动切换到当前窗口的下一个窗口"""
a = driver.window_handles
b = driver.current_window_handle
k = a.index(b)
driver.switch_to.window(a[k+1]) def window_back(driver):
"""自动切换到当前窗口的上一个窗口"""
a = driver.window_handles
b = driver.current_window_handle
k = a.index(b)
driver.switch_to.window(a[k - 1])
小技巧:
list.index(element)用来获取元素在list中的索引位置,如果元素不存在会抛出异常。
Selenium - 浏览器操作的更多相关文章
- 自动化测试基础篇--Selenium浏览器操作
摘自https://www.cnblogs.com/sanzangTst/p/7462056.html 学习 Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法 ...
- Java Selenium - 浏览器操作
浏览器主要操作方法来自接口 org.openqa.selenium.WebDriver , 实现于org.openqa.selenium.remote.RemoteWebDriver这个类,然后不同浏 ...
- selenium浏览器操作
在元素定位中xpath使用的还算比较多,介绍一下常见的firfox和chrome浏览器插件安装 一.浏览器定位工具安装 1.firfox firfox比较简单,主要浏览器自带的定位功能也比较强大国内也 ...
- selenium webdriver(1)---浏览器操作
启动浏览器 如何启动浏览器已在上篇文章中说明,这里还是以chrome为例,firefox.IE启动方式相同. //启动浏览器 import org.openqa.selenium.WebDriver; ...
- 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS
第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS PhantomJS虚拟浏览器 phantomjs 是一个基于js的webkit内核无头浏览器 ...
- selenium webdriver操作各浏览器
描述 本文主要是针对Chrome 62 , firefox57 ,和IE11 三个版本的操作.相关的driver .可点击以下链接.所有的driver 建议放在浏览器的目录下,本文中所有的driver ...
- 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1
孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...
- selenium 浏览器基础操作(Python)
想要开始测试,首先要清楚测试什么浏览器.如何为浏览器安装驱动,前面已经聊过. 其次要清楚如何打开浏览器,这一点,在前面的代码中,也体现过,但是并未深究.下面就来聊一聊对浏览器操作的那些事儿. from ...
- Selenium常用API的使用java语言之7-控制浏览器操作
(六)控制浏览器操作 1.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸找开,访问的页面在这种尺寸下运行.例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估 ...
- selenium元素和浏览器操作
click和clear from selenium.webdriver.support.wait import WebDriverWait import time browser = webdrive ...
随机推荐
- Python实现方便的读入数字
众所周知,python只能读字符串,你如果要读整数只能读一个字符串,split成列表,再用int或者float转换. 比如这样 s=input().split() a,b=map(int,s) #或者 ...
- Github学生认证具体步骤
具体步骤展示 一.进入相关的申请地址 地址在此:https://education.github.com/pack/ 二.选中右上方的Student,然后选择第二个选项 在我们已经注册号Github账 ...
- 【经验分享】RTC 技术系列之视频编解码
要了解什么是视频编解码,首先我们需要了解什么是视频. 视频归根结底是一系列连续的图像帧,当这些图像以一定速率播放时,人眼就会判断其是连续活动的,这样就构成了视频. 那为什么要进行视频编解码呢,因为视频 ...
- forEach如何终止循环
try { try { this.list.forEach(item => { ..... throw new Error('end') }) } catch(err) { console.lo ...
- 通过Navicat导入SQLServer的MDF文件和LDF文件
新建查询运行: EXEC sp_attach_db @dbname = '你的数据库名', @filename1 = 'mdf文件路径(包缀名)', @filename ...
- pack.json中的^ ~的区别
在版本说明前面还有个符号:'^'(插入符号)和'~'(波浪符号),他们之间的区别:例如: '~'(波浪符号):他会更新到当前minor version(也就是中间的那位数字)中最新的版本.放到我们的例 ...
- fastjson很好,但不适合我
记者:大爷您有什么特长呀? fastjson:我很快. 记者:23423乘以4534等于多少? fastjson:等于2343. 记者:?? fastjson:你就说快不快吧! 这个略显马丽苏的标题, ...
- ICMP隐蔽隧道攻击分析与检测(四)
• ICMP隧道攻击通讯特征和特征提取 一.ICMP Ping正常通讯特征总结 一个正常的 ping 每秒最多只会发送两个数据包,而使用 ICMP隧道的服务器在同一时间会产生大量 ICMP 数据包 正 ...
- python入门教程之九日期时间常用操作
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Py ...
- [Linux]常用命令之【tar/zip/unzip/gzip/gunzip】
1 tar .tar与.gz有什么联系与区别? .tar 只是进行打包,并没有压缩. 则: 用tar-cvf进行打包 用tar-xvf进行解包. .tar.gz 是既打包又压缩 ,则: tar –cz ...