【python+selenium的web自动化】- 控制浏览器的常用操作

如果想从头学起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来操作。在实际应用中我们打开新的标签页是通过鼠标点击浏览器的"+"号,除了这种方法,还可以怎么打开新标签页呢,思考一下,答案将在后面的文章中揭晓→传送门

控制滚动条

​ 一般元素定位,元素如果不在浏览器的可视位置(即可见只是不在可视位置),会自动把元素滚动到可视位置,但也有不会自己滚动的(比较少),那我们就可以用selenium的ele.location_once_scrolled_into_view()就可以滚动到某个元素处,也就是滚动直到这个元素出现在屏幕里。除了这种方式以外,也可以用js来滚动窗口。

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

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

ele = driver.find_element_by_xpath('//h3[@class="t c-gap-bottom-small"]//a')
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)")
posted @ 2021-03-09 10:37  miki_peng  阅读(2819)  评论(1编辑  收藏  举报