Selenium的第四天打卡——Selenium浏览器应用(完整版)

Selenium浏览器应用

目录

Selenium浏览器应用

一、浏览器操作示例代码

1.设置浏览器缩放大小

2.浏览器前进和后退

3.浏览器刷新

二、WebDriver常见方法

三、鼠标事件示例

四、键盘事件示例

五、获取断言信息

六、窗口的切换

七、关键注意事项


一、浏览器操作示例代码

1.设置浏览器缩放大小
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
# #隐式等待
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(10)# 设置特定窗口尺寸(宽480,高800)
driver.set_window_size(480, 800)
2.浏览器前进和后退
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")driver.back()  # 后退
time.sleep(3)
driver.forward()  # 前进
time.sleep(3)
3.浏览器刷新
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)driver.refresh()  # 刷新页面
time.sleep(3)

二、WebDriver常见方法

element.click()      # 点击元素
element.send_keys()  # 输入内容
element.clear()      # 清除内容
element.submit()     # 提交表单

三、鼠标事件示例

在WebDriver中,将这些关于鼠标操作的方法封住在ActionChains类中
ActionChains类提供了鼠标操作的常用方法
1.perform()执行所有ActionChains中存储的行为
2.context_click()右击
3.double_click()双击
4.drag_and_drop()拖动

5.move_element()鼠标悬停
这里只演示鼠标悬停操作,如下:

import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Bydriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.get("http://www.baidu.com")
time.sleep(2)# 鼠标悬停到设置按钮
st_button = driver.find_element(By.CSS_SELECTOR, 'span[id="s-usersetting-top"]')
ActionChains(driver).move_to_element(st_button).perform()
time.sleep(2)

四、键盘事件示例

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
#导入keys类 才能调用键盘
from selenium.webdriver.common.keys import Keysdriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)
#定位输入框
search_bx = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"]')
search_bx.send_keys("向日葵葵")
time.sleep(3)
#调用哪个就写哪个英文名,注意大写
#键盘删除键 删除多余的葵,这个键只能删除一个字符,要想多删,使用乘法
search_bx.send_keys(3 * Keys.BACK_SPACE)
time.sleep(2)# 全选内容
search_bx.send_keys(Keys.CONTROL, 'a')
time.sleep(2)# 回车搜索
search_bx.send_keys(Keys.ENTER)
time.sleep(2)

五、获取断言信息

 五、获取断言信息:为了判断这个操作是否成功
判断方式:1.文本信息 2.title信息 3.url地址

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keysdriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)search_bx = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"]')
search_bx.send_keys("长孙无忌")
search_bx.send_keys(Keys.ENTER)
time.sleep(3)#获取搜索出来的第一页的内容标题
#如果这个方法获取到的是多个值,则会把值放到一个列表中
# 注意:这里要使用find_elements,复数形式
titles = driver.find_elements(By.XPATH, '//div[@id="content_left"]//h3')
for t in titles:print(t.text)time.sleep(3)#获取网页标题 格式:搜索内容_百度搜索
print(driver.title)#获取当前网页url:
print(driver.current_url)# 六、设置元素等待
# 为了解决页面加载太慢,而代码执行过快,元素定位不到的问题
# ◎ 强制等待# time.sleep(4)这个是python中自带的日期时间模块完成的
# ◎  隐式等待driver.implicitly_wait(10)

六、窗口的切换

#七、窗口的切换
#每个窗口也都有句柄的概念,类似于id,具有唯一性
#1.直接切换
import time
from selenium.webdriver.common.action_chains import ActionChains
from  selenium import webdriver
from selenium.webdriver.chrome.service import Service
from  selenium.webdriver.common.by import By
#导入keys类 才能调用键盘
from  selenium.webdriver.common.keys import Keys
driver_path=(r"D:\newmade\pythonStudy\chromeDriver\chromedriver-win64\chromedriver.exe")
# #创建管理对象
service=Service(driver_path)
#打开浏览器
driver=webdriver.Chrome(service=service)#窗口最大化
driver.maximize_window()
#隐式等待
driver.implicitly_wait(10)
#打开网页
driver.get("http://www.baidu.com")
time.sleep(2)#定位输入框
search_bx=driver.find_element(By.CSS_SELECTOR,'input[id="kw"]')search_bx.send_keys("长孙无忌")search_bx.send_keys(Keys.ENTER)
time.sleep(3)#获得句柄
windowhandle=driver.current_window_handle
print(windowhandle)#点击使得可以跳入第二个窗口
search_bx=driver.find_element(By.CSS_SELECTOR,'div[class="_text_pbmk1_40"]').click()
time.sleep(3)#获取当前浏览器所有的窗口句柄,是列表形式的
handles=driver.window_handles
print(handles)handle2=driver.current_window_handle#根据句柄进行切换
for handle in handles:if handle!=handle2:driver.switch_to.window(handle)time.sleep(10)#2.根据下标进行窗口切换,下标为-1的是最新打开的窗口,0的是第一个打开的窗口
driver.switch_to.window(handles[0])

七、关键注意事项

  • 元素定位时使用复数形式find_elements获取多个元素
  • 键盘操作需导入Keys
  • 鼠标操作需导入ActionChains
  • 隐式等待implicitly_wait需设置在浏览器初始化后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/84992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PMO价值重构:从项目管理“交付机器”到“战略推手”

在数字化转型浪潮中,项目管理办公室(PMO)正经历着前所未有的角色蜕变。传统上,PMO往往被视为项目管理的“交付机器”,专注于项目的按时交付和资源分配。然而,随着企业对战略执行的重视,PMO正逐渐…

本地依赖库的版本和库依赖的版本不一致如何解决?

我用的 yarn v4 版本,所以以下教程命令都基于yarn 这里假设我报错的库名字叫 XXXXXXXX,依赖他的库叫 AAAAAAAA 排查解决思路分析: 首先查看一下 XXXXXXXX 的依赖关系,执行 yarn why XXXXXXXX 首先我们要知道 yarn 自动做了库…

SQLiteStudio - 免费开源、轻量高效,跨平台的 SQLite 数据库管理工具,代替 Navicat for SQLite

管理 SQLite 数据库就用这款软件,真的早该摒弃破解和盗版的 Navicat 了。 SQLiteStudio 是一款专注于管理 SQLite 数据库 的桌面软件,用于浏览和编辑 SQLite 数据库文件。软件的作者是来自波兰的开发者 Paweł Salawa,他是一位拥有 20 年 Ja…

DeepSeek R1-0528 新开源推理模型(免费且快速)

DeepSeek推出了新模型,但这不是R2! R1-0528是DeepSeek的最新模型,在发布仅数小时后就在开源社区获得了巨大关注。 这个悄然发布的模型DeepSeek R1-0528,已经开始与OpenAI的o3一较高下。 让我来详细介绍这次更新的新内容。 DeepSeek R1-0528 发布 DeepSeek在这次发布中采…

Opera Neon发布该公司首款“AI代理”浏览器

Opera 的浏览器产品组合今日迎来了新成员。Opera Neon 是该公司首款“AI 代理”浏览器,旨在“重新思考浏览器在代理网络中的角色”。开发人员声称,Neon 能够理解用户的意图,并利用 AI 驱动的功能将其转化为行动。 Opera Neon 由三个主要部分…

网络安全之Web渗透加解密

项目基本使用 准备环境:node.js python chrome npm install chrome-remote-interface pip install playwright playwright install chromium pip install mitmproxy ............... 第一步启动cdp.js。 第二步使用python .\cdp_load.py vue_demo,连…

【VSCode-Qt】Docker远程连接的项目UI文件在 VSCode 上无法预览

Docker远程连接的UI文件在 VSCode 上无法预览,通常是因为 VSCode 通过远程开发扩展(Remote - SSH/Docker)连接到 Docker 容器时,某些图形化功能未正确配置或支持。以下是可能原因和解决方案: 原因分析 X11 转发未配置…

【HW系列】—web组件漏洞(Strtus2和Apache Log4j2)

本文仅用于技术研究,禁止用于非法用途。 文章目录 Struts2Struts2 框架介绍Struts2 历史漏洞汇总(表格)Struts2-045 漏洞详解 Log4j2Log4j2 框架介绍Log4j2 漏洞原理1. JNDI 注入2. 利用过程 Log4j2 历史漏洞JNDILDAP 反弹 Shell 流程 Strut…

《深度关系-从建立关系到彼此信任》

陈海贤老师推荐的书,花了几个小时,感觉现在的人与人之间特别缺乏这种深度的关系,但是与一个人建立深度的关系并没有那么简单,反正至今为止,自己好像没有与任何一个人建立了这种深度的关系,那种双方高度同频…

sass基础语法

Sass(Syntactically Awesome Style Sheets)是一种 CSS 预处理器,提供了比原生 CSS 更强大、更灵活的语法功能。它有两种语法格式: Sass(缩进语法,.sass 文件)SCSS(CSS-like 语法&am…

【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议

目录 1. 基本概念1.1 基本概念1.2 web应用程序1.3 静态web1.4 动态web 2. web服务器3. tomcat详解3.1 安装3.2 启动3.3 配置3.3.1 配置启动的端口号3.3.2 配置主机的名称3.3.3 其他常用配置项日志配置数据源配置安全配置 3.4 发布一个网站 4. Http协议4.1 什么是http4.2 http的…

AI in Game,大模型能力与实时音视频技术融合,交出AI应用新答卷

随着AI的技术进步和工具普及,尤其是在这两年的跃进之后,AI在游戏行业内的应用已经逐步由理念设想推向落地实践。从蔡浩宇披露的AI新游《Whispers From The Star》到GDC上各大厂家呈现的游戏AI新亮点,我们看到了更多AI与游戏的结合方式&#x…

Android Studio 2022.2.1.20 汉化教程

查看Android Studio 版本 Android Studio Flamingo | 2022.2.1 Patch 2 下载:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable

常见的分词算法

常见的分词方法分类如下: 类型名称说明优缺点1️⃣ 基于空格/标点Word-level以空格或标点划分,如 "Hello, world!" → ["Hello", ",", "world", "!"]✅简单,❌无法处理新词,词…

湖北理元理律师事务所观察:债务优化如何成为民生安全网

据央行2023年报告,中国家庭债务收入比达137.8%。面对债务高压,湖北理元理律师事务所的实践揭示:专业债务规划的价值不仅是减负数字,更是构建社会稳定的微观防线。 一、从“催收恐惧”到“主动管理”的转变 该所服务数据显示&…

服务器密码安全运维解决新思路:凭据管理SMS+双因素SLA认证结合的方案

引言:云服务器安全成本困局 在云计算渗透率突破60%的今天,中小企业正面临严峻的安全悖论:某权威机构数据显示,72%的云上数据泄露事件源于凭据管理不当,而传统安全解决方案的采购成本往往超过中小企业年利润的8%。这种…

Vision Transformer网络结构

0.前言 参考CSDN大佬(太阳花的小绿豆)的代码,梳理了一下vit的网络结构,代码地址如下: deep-learning-for-image-processing/pytorch_classification/vision_transformer at master WZMIAOMIAO/deep-learning-for-image-processing GitHub …

C++ 图像处理库 CxImage 简介 (迁移至OpenCV)

文章目录 核心功能特点局限性与替代方案常用方法构造函数从数组创建图像访问属性访问像素点Windows平台支持 常用方法迁移至OpenCV CxImage 是一款功能强大的图像处理类库,主要用于 Windows 平台的图像处理任务。它支持多种图像格式的加载、保存、编辑及特效处理&am…

【博客系统】博客系统第十一弹:从零开始在 Linux 系统上搭建 Java 部署环境并部署 Web 项目

搭建 Java 部署环境 JDK 1. 更新软件包 apt 命令详细介绍 sudo apt-get update2. 安装 OpenJDK 查找 JDK 包 apt list | grep "jdk"安装 JDK sudo apt install openjdk-17-jdk注意: 此处安装的是 OpenJDK,OpenJDK 是一个开源版本的 JDK&am…