如果想从头学起selenium,可以去看看这个系列的文章哦!

https://www.cnblogs.com/miki-peng/category/1942527.html

前言

​ 本文主要介绍selenium控制浏览器一些常用属性和方法,包括控制窗口大小、页面前进后退、页面刷新、打开或关闭标签页、滚动条等等

设置浏览器大小

import time
from selenium import webdriver # 浏览器实例化
driver = webdriver.Chrome() # 把浏览器窗口最大化
driver.maximize_window() # 把浏览器窗口最小化
driver.minimize_window() # 设置浏览器窗口大小,长、宽作为参数传递进去,单位:像素
driver.set_window_size(500,800) # 获取浏览器大小
size = driver.get_window_size()
print(size) time.sleep(5)
driver.quit()

前进/后退/刷新

import time
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()
time.sleep(2) # 后退
driver.back()
time.sleep(2)
# 前进
driver.forward()
time.sleep(2)
# 刷新
driver.refresh()
time.sleep(2) time.sleep(5)
driver.quit()

获取浏览器相关信息

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)

标签页切换

​ 在页面中点击某个链接之后,可能就会打开一个新的标签页,Chromedriver驱动是不会主动帮我们去切换。多标签页出现后,如果要做下一步操作,需要先切换浏览器标签页。所有切换动作都是用switch_to语句,标签页切换关键代码:switch_to.window(标签页句柄)

import time
from selenium import webdriver # 启动Chromedriver,并与Chromedriver开启会话
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
driver.find_element_by_id('kw').send_keys("selenium")
driver.find_element_by_id('su').click() # 获取当前标签页句柄
wins = driver.current_window_handle
print('当前标签页:', wins) # 点击其中一个百度结果,出现一个新标签页
driver.find_element_by_xpath('//h3[@class="t c-gap-bottom-small"]//a').click()
time.sleep(2) # 获取当前所有标签页句柄
wins = driver.window_handles # 返回的是一个列表,按照标签页打开的顺序
print('所有标签页1:', wins) # 切换到第一个标签页
driver.switch_to.window(wins[0])
time.sleep(2) # 打开新的标签页
js = 'window.open("https://www.cnblogs.com/miki-peng/")'
driver.execute_script(js)
time.sleep(2) # 再次获取当前所有标签页句柄
wins = driver.window_handles
print('所有标签页2:', wins) # 关闭当前标签页
driver.close() time.sleep(3)
driver.quit() # 关闭浏览器,kill掉chromedriver进程

小思考

​ 由于selenium中没有提供打开标签页的方法,但它是支持执行js语句的噢,因此可以通过js来操作。在实际应用中我们打开新的标签页是通过鼠标点击浏览器的"+"号,除了这种方法,还可以怎么打开新标签页呢,思考一下,答案将在后面的文章中揭晓。

控制滚动条

​ 一般元素定位,元素如果不在浏览器的可视位置(即可见只是不在可视位置),会自动把元素滚动到可视位置,但也有不会自己滚动的(比较少),那么我们就可以用js语句来实现滚动功能,关键代码:ele.location_once_scrolled_into_view

​ selenium提供了execute_script方法来执行js语句,几种滚动方式如下:

​ 1、移动元素element对象,与当前窗口的底部对齐

ele = driver.find_element_by_xpath('//h3[@class="t c-gap-bottom-small"]//a').click()
driver.execute_script("arguments[0].scrollIntoView(false);",ele)

​ 2、移动元素element对象,与当前窗口的顶部对齐

driver.execute_script("arguments[0].scrollIntoView();",ele)

​ 3、把页面移动到底部

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

​ 4、把页面移动到顶部

driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")

【python+selenium的web自动化】- 控制浏览器的常用操作的更多相关文章

  1. 【python+selenium的web自动化】- 元素的常用操作详解(一)

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html ​ 本篇主要内容:1.元素 ...

  2. 【python+selenium的web自动化】- 元素的常用操作详解(二)

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html ​ 本篇主要内容:1.鼠标 ...

  3. 【python+selenium的web自动化】- 针对上传操作的实现方案

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 关于上传操作 ​ 上传有两 ...

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

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

  5. 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...

  6. 【Selenium04篇】python+selenium实现Web自动化:文件上传,Cookie操作,调用 JavaScript,窗口截图

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第四篇博 ...

  7. 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  8. 【Selenium06篇】python+selenium实现Web自动化:日志处理

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第六篇博 ...

  9. 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...

  10. 【Selenium07篇】python+selenium实现Web自动化:PO模型,PageObject模式!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第七篇博 ...

随机推荐

  1. Leetcode(19)-删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...

  2. Deep Learning Specialization 笔记

    1. numpy中的几种矩阵相乘: # x1: axn, x2:nxb np.dot(x1, x2): axn * nxb np.outer(x1, x2): nx1*1xn # 实质为: np.ra ...

  3. vue 的 computed 属性在什么时间执行

    vue 的 computed 属性在什么时间执行

  4. 如何使用 js 实现一个 debounce 函数

    如何使用 js 实现一个 debounce 函数 原理 防抖: 是指在指定的单位时间内,如果重复触发了相同的事件,则取消上一次的事件,重新开始计时! 实现方式 "use strict&quo ...

  5. js & void & undefined & null

    js & void & undefined & null The void operator evaluates the given expression and then r ...

  6. React Learning Paths

    React Learning Paths React Expert React in Action The assessment may cover: Components Events and Bi ...

  7. d3 & hexagon

    d3 & hexagon https://bl.ocks.org/mbostock/5249328 https://bl.ocks.org/vasturiano/e70e14483fe01eb ...

  8. css useful skills blogs

    css useful skills blogs https://caniuse.com/ https://css-tricks.com https://css-tricks.com/almanac/p ...

  9. PBN离场定高转弯保护区插件发布测试

    昨天2月29日,是四年才有一次的日子,本想着应该写点什么,但一测试发现还有问题,只能先放下. 今天是三月份的第一天,一年已经过去了六分之一.疫情的关系,原本并不紧急的工作,现在也开始积压的有些多了,时 ...

  10. 【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!

    目录 跨平台 UI 应用 Blazor 桌面应用 System.CommandLine 其它更新 ASP.NET Core 最近 .NET 6 Preview 1 发布了,.NET 统一是此版本的核心 ...