提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
第零天练习补充零基础入门刷题Python-Selenium-自动化测试-搭建WebDriver驱动-以及下载驱动的地址
第一天练习打开Firefox浏览器实例和打开Chrome浏览器实例-进入百度的首页
第二天练习用Chrome浏览器实例-在百度的首页上搜索B站
第三天练习用Chrome浏览器实例-在百度的首页上搜索B站-利用XPATH打开B站-注意:(从现在开始以后零基础入门刷题Python-Selenium-自动化测试都会用XPATH的方法来使用 )
第四天练习用Chrome浏览器实例-在百度的首页上搜索B站后打开B站-在B站搜索框中搜索Selenium
第五天练习用Chrome浏览器实例-浏览器窗口的设置-和在当前浏览器窗口截图操作
提示:以下是本篇文章正文内容,下面案例可供参考
设置浏览器窗口,和在当前浏览器窗口截图,往往能让我们一览多个窗口,同时开始自动化测试,并可以通过截图查看自动化测试的内容有没有正确。
一、今天我们学习,怎么使设置浏览器窗口,和在当前浏览器窗口截图
二、详细代码
1.浏览器窗口的设置,和在当前浏览器窗口截图
# 将浏览器窗口设置为最大化
# 1. 将浏览器窗口设置为最大化
driver.maximize_window()
# 2. 将浏览器窗口设置为最小化(但这一步在最大化之后立即执行可能没有实际意义,因为用户看不到最大化的效果)
driver.minimize_window()
# 3. 将浏览器窗口设置为指定大小(800x500)
driver.set_window_size(800, 500)
# 4. 将浏览器窗口移动到制定位置(400x400)
driver.set_window_position(400, 400) # 设置窗口左上角坐标为(400, 400)
# 保存当前浏览器窗口的截图为文件"./xx.png"
# 这将在脚本的当前工作目录下创建或覆盖一个名为"xx.png"的图片文件
# 1. 将浏览器窗口设置为最大化的截图
driver.get_screenshot_as_file("./最大化.png")
# 2. 将浏览器窗口设置为最小化的截图
driver.get_screenshot_as_file("./最小化.png")
# 3. 将浏览器窗口设置为指定大小的截图
driver.get_screenshot_as_file("./指定大小.png")
# 4. 将浏览器窗口设置为制定位置的截图
driver.get_screenshot_as_file("./制定位置.png")
2.详细代码
# 导入 Selenium WebDriver 的 Chrome 浏览器驱动模块
# 导入 Selenium 的 expected_conditions 模块,并将其重命名为 EC,用于定义等待元素时的预期条件
from selenium.webdriver.support import expected_conditions as EC
# 导入 WebDriverWait 类,用于实现智能等待,等待元素满足预期条件
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
# 导入用于元素定位的 By 类
from selenium.webdriver.common.by import By
# 导入 time 模块用于暂停执行
import time
# 创建一个 Chrome 浏览器的实例
# 这里假设 chromedriver 已正确配置在系统 PATH 中,或者提供了 chromedriver 的路径
driver = webdriver.Chrome()
# 创建一个 Chrome 浏览器的 WebDriver 对象,以便后续操作浏览器,如打开网页、查找元素、执行操作等
# 使用 driver 对象打开百度首页的 URL
driver.get('https://www.baidu.com')
# 让浏览器打开百度的首页,使用 get 方法加载百度的网址
# 使用 find_element 方法通过 XPATH 定位百度搜索框
# XPATH 表达式 '//input[@id="kw"]' 用于选择 ID 为 "kw" 的 input 元素,即搜索框
search_box = driver.find_element(By.XPATH, '//input[@id="kw"]')
# 通过 XPATH 表达式查找百度搜索框元素,使用 find_element 方法结合 By.XPATH 定位方式,根据提供的 XPATH 表达式找到对应的元素,并将其存储在 search_box 变量中
# 在搜索框中输入搜索关键词“B站”
search_box.send_keys('B站')
# 在找到的搜索框元素(search_box)中输入搜索关键词 "B站",使用 send_keys 方法模拟键盘输入操作
# 提交搜索,这通常是通过点击搜索框旁边的搜索按钮或通过按下回车键来实现的
# 但由于我们已经通过 send_keys 输入了关键词,并且搜索框通常具有搜索功能,
# 因此调用 submit() 方法将触发搜索
search_box.submit()
# 调用搜索框元素的 submit 方法提交搜索,相当于点击搜索按钮或按下回车键进行搜索操作
# 等待搜索结果页面加载
# 这里使用简单的 time.sleep() 方法暂停执行 3 秒
# 在实际项目中,为了提高效率和可靠性,推荐使用 WebDriverWait 等更精确的等待方式
time.sleep(3)
# 调用 time 模块的 sleep 方法,暂停程序执行 3 秒,目的是等待百度搜索结果页面加载完成,但这种等待方式不够灵活,可能会导致等待时间过长或过短
# 查找搜索结果中第一个包含 "哔哩哔哩" 文本的元素
# 使用 find_elements 方法返回所有匹配的元素列表
# XPATH 表达式 '//div[@id="content_left"]//a[contains(text(), "哔哩哔哩")]' 用于在 ID 为 "content_left" 的 div 内
# 查找所有 a 元素,这些元素的文本内容包含 "哔哩哔哩"
results = driver.find_elements(By.XPATH, '//div[@id="content_left"]//a[contains(text(), "哔哩哔哩")]')
# 使用 find_elements 方法结合 By.XPATH 定位方式,根据提供的 XPATH 表达式查找搜索结果中所有包含 "哔哩哔哩" 文本的元素,并将结果存储在 results 列表中
# 如果找到了至少一个匹配项,则点击第一个元素
if results:
results[0].click()
# 检查 results 列表是否不为空,如果不为空,点击列表中的第一个元素,通常用于跳转到第一个匹配的搜索结果页面
# 在实际自动化测试中,通常不需要这样的延迟,除非有特定的需求
time.sleep(5)
# 再次调用 time 模块的 sleep 方法,暂停程序执行 5 秒,可能是为了等待某些元素加载完成或进行一些其他操作,根据具体需求而定
# 获取所有打开的窗口句柄
window_handles = driver.window_handles
# 使用 window_handles 属性获取当前打开的所有窗口的句柄列表,句柄可以用来唯一标识不同的窗口
# 假设我们要切换到新打开的窗口,这里假设是最后一个打开的窗口
handle = window_handles[-1]
# 从窗口句柄列表中选取最后一个元素作为要切换的窗口句柄,存储在 handle 变量中,假设新打开的窗口是最后一个
# 切换到新打开的窗口
driver.switch_to.window(handle)
# 使用 switch_to.window 方法,将浏览器的焦点切换到 handle 所代表的窗口,即切换到新打开的窗口
# 查找搜索框元素,使用智能等待
# 使用 By.CLASS_NAME 定位元素
search_bilibili = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.XPATH, '//input[@class="nav-search-input"]'))
)
# 使用 WebDriverWait 类结合 expected_conditions 模块的 presence_of_element_located 条件,等待 30 秒,直到找到具有 class 为 nav-search-input 的元素出现,找到后存储在 search_bilibili 变量中
# 在搜索框中输入搜索关键词 “Selenium”
search_bilibili.send_keys('Selenium')
# 在找到的搜索框元素(search_bilibili)中输入 "Selenium" 作为新的搜索关键词,使用 send_keys 方法模拟键盘输入操作
# 提交搜索框中的内容
search_bilibili.submit()
# 调用搜索框元素(search_bilibili)的 submit 方法提交搜索,开始新的搜索操作
# 1. 将浏览器窗口设置为最大化
driver.maximize_window()
# 1. 将浏览器窗口设置为最大化的截图
driver.get_screenshot_as_file("./最大化.png")
# 2. 将浏览器窗口设置为最小化(但这一步在最大化之后立即执行可能没有实际意义,因为用户看不到最大化的效果)
driver.minimize_window()
# 2. 将浏览器窗口设置为最小化的截图
driver.get_screenshot_as_file("./最小化.png")
# 3. 将浏览器窗口设置为指定大小(800x500)
driver.set_window_size(800, 500)
# 3. 将浏览器窗口设置为指定大小的截图
driver.get_screenshot_as_file("./指定大小.png")
# 4. 将浏览器窗口移动到制定位置(400x400)
driver.set_window_position(400, 400) # 设置窗口左上角坐标为(400, 400)
# 4. 将浏览器窗口设置为制定位置的截图
driver.get_screenshot_as_file("./制定位置.png")
time.sleep(5)
# 调用 time 模块的 sleep 方法,暂停程序执行 5 秒,可能是为了等待搜索结果页面加载或进行一些其他操作
# 打印当前浏览器窗口的标题
print(driver.title)
# 使用 print 函数输出当前浏览器窗口的标题,可用于验证操作是否成功或检查当前页面是否符合预期
# 关闭浏览器
driver.quit()
# 调用 driver 的 quit 方法关闭浏览器,释放资源,结束程序运行
3.补充:如果获取的窗口截图不是自己想要的,可以根据下面代码进行修改
# 获取所有打开的窗口句柄
window_handles = driver.window_handles
# 使用 window_handles 属性获取当前打开的所有窗口的句柄列表,句柄可以用来唯一标识不同的窗口
# 假设我们要切换到新打开的窗口,这里假设是最后一个打开的窗口
handle = window_handles[-1]
# 从窗口句柄列表中选取最后一个元素作为要切换的窗口句柄,存储在 handle 变量中,假设新打开的窗口是最后一个
# 切换到新打开的窗口
driver.switch_to.window(handle)
# 使用 switch_to.window 方法,将浏览器的焦点切换到 handle 所代表的窗口,即切换到新打开的窗口
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文介绍了浏览器窗口的设置,和在当前浏览器窗口怎么截图。