day:26 selenium——文本、if、assert、切换窗口

news/2025/3/20 10:40:00/文章来源:https://www.cnblogs.com/junting/p/18782555

一.text 获取文本

(1)text 获取文本

from selenium.webdriver.common.action_chains import ActionChains
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
time.sleep(2)
sz=dx.find_element_by_id("s-usersetting-top").text

(2)if 判断文本是否正常

from selenium import webdriver #导入selenium模块中的webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com") #通过get打开页面
time.sleep(2)
dx.maximize_window()
time.sleep(2)
sz=dx.find_element_by_id("s-usersetting-top").text
print(sz)
if sz=="设置":
print("ok")
else:
print("no")

二.title 标题

(1)重开窗口的标题都在第一个页面上

图片
from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title)
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title)
time.sleep(2)
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title)
图片
(2)通过get 打开网页,覆盖的,标题就是打开的页面

from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
dx.get("https://www.baidu.com")
print(dx.title) #百度一下,你就知道
time.sleep(2)
dx.get("https://www.jd.com")
print(dx.title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!

三.assert 断言

assert判断:正确的通过,执行下一步,失败就报错

图片
图片

from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
js=dx.title
assert js=="过期更新"
print("ok")
四.切换窗口

(1)当页面出现两个窗口,可以根据索引切换,索引位0,1

from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
dx.switch_to.window(jbs[1]) #两个窗口索引 0,1
time.sleep(2)
dx.find_element_by_id("kw").send_keys(" 切换")
(2)当页面出现三个窗口,可以根据索引切换,索引位0,2,1

案例:切换最后的夜未眠 1

from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
dx.switch_to.window(jbs[1]) #两个窗口索引 0,1
time.sleep(2)
dx.find_element_by_id("kw").send_keys(" 切换")
案例2:

切换中间的窗口

from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
dx.switch_to.window(jbs[2]) #两个窗口索引 0,1
time.sleep(2)
dx.find_element_by_link_text("免费注册").click()
3.通过for ,判断title 切换窗口

from selenium import webdriver #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
time.sleep(2)
print(dx.title) #过期更新
w="window.open('https://www.jd.com')"
dx.execute_script(w)
print(dx.title) #过期更新
w="window.open('https://www.baidu.com')"
dx.execute_script(w)
print(dx.title) #过期更新
jb=dx.current_window_handle #获取当前句柄
print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB
jbs=dx.window_handles #获取所有句柄,返回一个列表
print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']
for i in jbs:
dx.switch_to.window(i)
if "百度一下,你就知道" in dx.title:
break
print(dx.title)
dx.find_element_by_id("kw").send_keys("切换成功")
图片

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

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

相关文章

如何精准控制生产成本?8年生产主管告诉我掌握这些底层逻辑!

你是不是常常听到“控制成本”这个词,但却搞不清楚到底应该从哪里入手? 其实,成本控制并不是简单的削减支出,而是要在每个环节上做到精益求精。 作为一名有8年经验的生产主管,我可以告诉你,成本控制的关键在于对生产过程中的每一环节都要有清晰的了解和精准的把控。下文介…

CIMCO Edit 2024软件下载与安装教程

CIMCO Edit 2024是Cimco Integration公司推出的一款强大的数控程序编辑器,可帮助用户进行存储和检索NC程序、NC程序优化、后处理、以及快速NC程序仿真,它拥有强大而实用的数控编辑功能、文件的智能比较、刀位轨迹的三维模拟、DNC传输等强大功能,可帮助用户更快捷的完成NC程序…

FunASR: 让AI听懂你的声音

分享一个语音识别黑科技——开源免费的FunASR!我们先看下Funasr的语音识别效果。第一个是识别MP4视频文件。第二个是,电话语音实时识别。FunASR有两个识别引擎,离线识别 和 实时识别。 离线识别引擎,主要用途是对录音文件进行转写,得到文本结果。 典型的使用场景:会议录音…

启航杯writeup

启航杯writeup 一、web 1.Easy_include题解打开网址得到php代码,发现存在可以通过伪协议来绕过过滤​ 2.构造伪协议 ​ 命令会反向输出所有以fl开头的文件内容输出得到的内容。 ?file=data://text/plain,<?=system(tac fl*);?>​ 3.得到flag2.PCR(文件上传请求)…

使用ArgoCD管理Kubernetes部署指南

对于寻求利用云原生技术力量的组织来说,高效管理 Kubernetes 部署至关重要。ArgoCD 是一款针对 Kubernetes 的声明式 GitOps 持续交付工具,它是一种强大的解决方案。它有助于根据存储在 Git 存储库中的配置自动部署应用程序,从而使 Kubernetes 集群中的应用程序状态与 Git 中…

DeepC2—基于DeepSeek的C2平台

蹭个DeepSeek热点最近DeepSeek很火,蹭个热点,前几天搞了个自动生成工具的网站,有模有样吧,作用的话看看就行,网上绝大部分所谓的Agent也就这样...

3.19 CW 模拟赛 T3. 软件工程

前言 策略肯定是锅了, 基础上需要对策略进行一些修改 喵了个咪的最终还是要针对考试 谢特 某吴姓同学的策略是非常适合我的, 在它的基础上, 我们考虑进行一些本土化 首先花 \(20 \textrm{min}\) 思考每道题, 也就是每道题严格 \(5 \textrm{ min}\) 首先按照能拿到的 \(\rm{subt…

生成AI的两大范式:扩散模型与Flow Matching的理论基础与技术比较

生成模型已成为人工智能领域的关键突破,赋予机器创建高度逼真的图像、音频和文本的能力。在众多生成技术中,扩散模型和Flow Matching尤为引人注目。这两种方法虽然都致力于在噪声与结构化数据之间建立转换,但其基础原理存在本质区别。本文将系统地比较这两种先进技术,深入探…

基于ACE_SOCK_Dgram的UDP同步通信

1、创建基于ACE_SOCK_DGRAM的UDP服务端1 void udp_server_base_on_synch()2 {3 // 1. 绑定服务端地址(端口 8080)4 ACE_INET_Addr server_addr(8080);5 ACE_SOCK_DGRAM sock;6 if (sock.open(server_addr) == -1) {7 std::cerr << "Serve…

第二十一章 项目管理科学基础(2025年详细解析版)

目录导学21.1 工程经济学资金的时间价值与等值计算定义常识现在值与将来值等值计算问题单利法与复利法 (利滚利)单利法复利法承兑汇票示例项目经济静态评价方法什么叫回收期?什么叫静态?静态投资回收期例题(必须掌握)投资收益率定义公式例题项目经济动态评价方法什么是动态…

windows输入法选用

前言 一直以来pc输入法都是用的搜狗,但是总想换一个用一用,每次都是尝试换讯飞,每次都用不下去。 不推荐 讯飞 bug极多。比如中文输入下,按shift,应该留下英文。当然一般情况下没问题,但是出现bug时,切换后再打字,会覆盖前面的字。 QQ 曾长期使用过,但是那时候用电脑用…

OpenTelemetry安装和使用

官网 https://opentelemetry.io/环境查看 系统环境# cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) # uname -a Linux Rocky9Opentelemetry003078 5.14.0-362.18.1.el9_3.0.1.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Feb 11 13:49:23 UTC 2024 x86_64 x86_64 x86_…