对浏览器有哪些操作

  • 最大化、最小化浏览器
  • 控制、获取浏览器大小
  • 获取当前标签页title、url
  • 前进、后退、刷新
  • 执行js语句
  • 打开、关闭,切换新标签页
  • 滚动页面
  • 上传附件
  • 鼠标悬停
  • 对话框的定位方式
  • 选择框的操作
  • 其他一些操作

最大化最小化浏览器

 from time import sleep
from selenium import webdriver # 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe") # 访问网址
driver.get("https://www.baidu.com") # 最大化浏览器
driver.maximize_window() sleep(2) # 最小化浏览器
driver.minimize_window()

控制获取浏览器大小

# 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe") # 访问网址
driver.get("https://www.baidu.com") # 获取浏览器大小
size = driver.get_window_size()
print(f"浏览器大小:{size}") sleep(2) # 设置浏览器大小
driver.set_window_size(1200, 1000)

结果执行

浏览器大小:{'width': 1936, 'height': 1056}

小结:get_window_size() 返回的是字典

获取当前标签页url  , title

# 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe") # 访问网址
driver.get("https://www.baidu.com") # 获取当前标签页的title
print(f"标签页title:{driver.title}") # 获取当前标签页的url
print(f"标签页url:{driver.current_url}") # 获取当前浏览器的名称(不常用)
print(f"标签页name:{driver.name}") # 获取当前页面完整的HTML代码
print(f"标签页page_source:{driver.page_source}")

结果执行

标签页title:百度一下,你就知道
标签页url:https://www.baidu.com/
标签页name:chrome
标签页page_source:<html><head>...</head></html>

前进,后退,刷新

 # 前进
driver.forward() # 后退
driver.back() # 刷新
driver.refresh()

执行js语句

# 同步执行js
js='console.log(2)'
driver.execute_script(js) # 异步执行js
driver.execute_async_script("alert(2)")

关闭,打开,切换新标签页

 # 打开新的标签页
js = 'window.open("https://www.baidu.com/")'
driver.execute_script(js) # 获取当前标签页句柄
print(driver.current_window_handle) # 获取浏览器所有标签页句柄
handles = driver.window_handles
print(handles) # 切换标签页
driver.switch_to.window(handles[-1]) # 关闭当前标签页
driver.close()

知识小结:

  • 打开新的标签页只能通过 js 来操作
  • 可以根据标签页的句柄来切换标签页
  • 操作标签页的好处就是,可以只打开一个浏览器但可以访问多个不同的网页;这在后续集成单元测试框架(unittest、pytest)的时候会有很大的帮助

滚动页面(三种方法)

# 滚动随机高度(100-999的随机高度)
js = "var q=document.documentElement.scrollTop=" + random.randint(100, 999)
driver.execute_script(js)
2 滚动条手动到指定的位置,这种方法更常用
target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去
 3  发送tab键
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

上传附件

 文件上传需要安装pypiwin32
pip install pypiwin32 import win32com.client
shell = win32com.client.Dispatch('wScript.shell')
shell.Sendkeys(r"d:\timg.jpg")

鼠标悬停

 # 导入selenium
from selenium import webdriver
driver = webdriver.Chrome()
# selenium中的actionchains的方法
from selenium.webdriver.common.action_chains import ActionChains
driver.get('URL')
driver.maximize_window()
# 识别需要悬停的元素
ele = driver.find_element_by_link_text('广微数据')
# 鼠标移到悬停元素上
ActionChains(driver).move_to_element(ele).perform()

对话框的操作方式

有三种类型的对话框 alert,confirm,prompt

alert-浏览器原生对话框定位方式

 浏览器原生对话框操作方法
driver.switch_to.alert.accept() 点击OK
driver.switch_to.alert.text 得到对话框内容
driver.switch_to.alert.dismiss() 点击cancel
driver.switch_to.alert.send_keys() 输入内容

confirm,prompt   HTML元素对话框使用xpath,css定位

选择框的操作

单选框的操作

  • 单选框,一般默认选中其中1个
  • 点击选择时,有且只能选中1个,所以再操作时,无须判断是否存在默认值
  • 举例,选择女性
    driver.find_element_by_css_selector('input[value="female"]').click()

多选框的操作

  • 如果选择某一项,点击该项,会取消选中
  • 如果该项未选中,点击该项,会被选中
  • 查看上述截图,我们会发现默认选中的会存在1个 checked的属性
 将默认选中的点选,即取消选中
driver.find_element_by_xpath('//*[@name="course"][@checked]').click()
然后勾选我们想要的元素 driver.find_element_by_css_selector('input[value=python]').click()
driver.find_element_by_css_selector('input[value=selenium]').click()

复选框的操作

点击该项,即可选中

已选中的再次点击,不会取消选中

按住键盘CTRL键可实现多选

  • 若实现对复选框的操作,需要导入Select类:from selenium.webdriver.support.ui import Select
from selenium import webdriver
# 导入 Select
from selenium.webdriver.support.ui import Select driver = webdriver.Chrome() # 打开网址;地址需要修改
driver.get('http://xxxxx:9000/zentao') # 获得相应的WebElement
select = Select(driver.find_element_by_id("select")) # 先取消选择所有的选项
select.deselect_all() # 通过文本选中 玛莎拉蒂
select.select_by_visible_text("玛莎拉蒂") # 通过 value 值选中 兰博基尼
select.select_by_value("Lamborghini") # 通过 index 选择元素,索引从0开始
select.select_by_index(2) driver.quit()

其他一些操作

 perform(self):        ---执行链中的所有动作
reset_actions(self):     ---清除存储在远端的动作
click(self, on_element=None):   ---鼠标左键单击
click_and_hold(self, on_element=None):    --鼠标左键单击,不松开
context_click(self, on_element=None):       ---鼠标右键单击
double_click(self, on_element=None):        ---鼠标左键双击
drag_and_drop(self, source, target):        ---拖拽到某个元素后松开
drag_and_drop_by_offset(self, source, xoffset, yoffset):        ---拖拽到某个坐标后松开
key_down(self, value, element=None):        ---某个键盘键被按下
key_up(self, value, element=None):          ---松开某个键
move_by_offset(self, xoffset, yoffset):     ---鼠标移动到某个坐标
move_to_element(self, to_element):          ---鼠标移动到某个元素
move_to_element_with_offset(self, to_element, xoffset, yoffset):        ---移动到距某个元素(左上角)多少的位置
release(self, on_element=None):     ---在某元素上松开鼠标
send_keys(self, *keys_to_send):     ---发送某些值到当前焦点元素
send_keys_to_element(self, element, *keys_to_send):     ---发送某些值到指定元素

举例:ActionChains(driver).click(clk_btn).context_click(right_btn).perform()

right_click = driver.find_element_by_xpath('//a[@name="tj_trnews"]')

ActionChains(driver).context_click(right_click).perform()

selenium(2)-selenium针对浏览器的操作有哪些的更多相关文章

  1. python+selenium一:对浏览器的操作

    # 1.打开Firefox浏览器from selenium import webdriverdriver = webdriver.Firefox()driver.get("https://w ...

  2. 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1

    孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...

  3. python下selenium模拟浏览器基础操作

    1.安装及下载 selenium安装: pip install selenium  即可自动安装selenium geckodriver下载:https://github.com/mozilla/ge ...

  4. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

  5. selenium(三)浏览器操作

    from time import sleep from selenium import webdriver #定义浏览器是firefox driver=webdriver.Firefox() #页面打 ...

  6. (四)selenium打开和关闭浏览器

    一.Selenium简介 Selenium3.0主要变更特性: ①移除seleniumRC ②FireFox和Safari推出了自己的driver(geckodriver 和 Safaridriver ...

  7. Selenium WebDriver原理(二):Selenium是如何操纵浏览器的?

    前言 上一篇文章<selenium webdriver 是怎么运行的>用了一个简单的例子--搭出租车,形象地讲解selenium webdriver 是如何运行的,而这一篇文章可以理解为深 ...

  8. 《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)

    1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Se ...

  9. Selenium+Chrome/phantomJS模拟浏览器爬取淘宝商品信息

    #使用selenium+Carome/phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏 ...

随机推荐

  1. linux:安装

    安装准备 1.虚拟机:VMware® Workstation 12 Pro 2.系统:CentOS-6.5-i386-bin-DVD1.iso 新建虚拟机 网络设置: NAT:配置好后Windows与 ...

  2. RabbitMQ(1)---基本概念

    一.安装RabbitMQ 安装直接用docker安装,如果手动安装的话比较繁琐,还要安装erlang语言的环境.在安装有docker机器上执行官网提供的指令(https://www.rabbitmq. ...

  3. 03.Django-ORM

    ORM 1. 数据库配置 配置使用sqlite3,mysql,oracle,postgresql等数据库 sqlite3数据库配置 DATABASES = { 'default': { # 默认使用的 ...

  4. Rocket - diplomacy - LazyModule

    https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModu ...

  5. jchdl - GSL实例 - Register

    https://mp.weixin.qq.com/s/uD5JVlAjTHQus2pnzPrdLg   多个D触发器可以组成一组寄存器. ​​ 摘自康华光<电子技术基础 · 数字部分>(第 ...

  6. Maven+JSP+SSM+Mysql实现的音乐网站

    项目简介 项目来源于:https://gitee.com/coder_ze/iMusic 本系统基于Maven+JSP+SSM+Mysql实现的音乐网站.主要实现的功能有音乐播放.下载.上传等几个模块 ...

  7. Java实现 LeetCode 797 所有可能的路径 (DFS)

    797. 所有可能的路径 给一个有 n 个结点的有向无环图,找到所有从 0 到 n-1 的路径并输出(不要求按顺序) 二维数组的第 i 个数组中的单元都表示有向图中 i 号结点所能到达的下一些结点(译 ...

  8. Java实现 蓝桥杯 算法提高 矩阵相乘

    算法提高 矩阵相乘 时间限制:1.0s 内存限制:256.0MB 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也 ...

  9. Java实现 LeetCode 334 递增的三元子序列

    334. 递增的三元子序列 给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列. 数学表达式如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ...

  10. Java实现 LeetCode 319 灯泡开关

    319. 灯泡开关 初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 ...