介绍
测试的系统:白月黑羽网站的测试系统(白月SMS系统)
测试内容:点击【学习教程】链接跳转到白月黑羽网站,获取此网站上的标题,然后回到原来的系统。
所涉及的知识点:frame切换/窗口切换
这个iframe元素非常的特殊,在html语法中,frame元素或者iframe元素的内容会包含一个被嵌入的零一份html文档。
在我们使用selenium打开一个网页是,我们的操作范围缺省是当前的html,并不包含被嵌入的html文档里面的内容。
如果我们要操作被嵌入的html文档中的元素,就必须切换操作范围到被嵌入的文档中。
切换到Frame(3种方式)
# 方式1:通过索引切换(第1个iframe,从0开始)driver.switch_to.frame(0)# 方式2:通过 name 或 id 属性切换driver.switch_to.frame("frame-name")# name="frame-name"driver.switch_to.frame("frame-id")# id="frame-id"# 方式3:通过 WebElement 对象切换(最灵活,推荐)iframe=driver.find_element(By.CSS_SELECTOR,"iframe.class-name")driver.switch_to.frame(iframe)切回主文档/父级Frame
# 切回父级 Frame(如果有多层嵌套,只向上退一层)driver.switch_to.parent_frame()# 切回最外层的主文档(彻底退出所有 iframe)driver.switch_to.default_content()
自动化测试程序
fromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECclassRedirect:def__init__(self):self.driver=webdriver.Chrome()defLogin(self,username,password):self.driver.get('http://127.0.0.1/mgr/sign.html')usernameElement=self.driver.find_element(By.ID,'username')usernameElement.send_keys(username)sleep(2)passwordElement=self.driver.find_element(By.ID,'password')passwordElement.send_keys(password)sleep(2)# 点击登录submitElement=self.driver.find_element(By.XPATH,"//div[@class='col-xs-12']/button")submitElement.click()sleep(2)print('登录成功~')defRedirectByhy(self):#mainWindow变量保存当前窗口的句柄mainWindow=self.driver.current_window_handle#定位跳转的新窗口链接iframe=self.driver.find_element(By.XPATH,'//footer/div/a')href=iframe.get_attribute('href')iframe.click()# 等待新窗口出现(窗口数量增加)WebDriverWait(self.driver,10).until(EC.number_of_windows_to_be(2))#切换到新窗口forhandleinself.driver.window_handles:ifhandle!=mainWindow:self.driver.switch_to.window(handle)breakself.driver.get(f'{href}')sleep(2)titleElements=self.driver.find_elements(By.XPATH,'//div[@id="nav-topics"]/a')fortitleintitleElements:print(title.text)print('【本次测试结束!!!!】')if__name__=='__main__':Re=Redirect()Re.Login('byhy','88888888')Re.RedirectByhy()
selenium 自动化测试工具实战项目(窗口切换)
张小明
前端开发工程师
AI Agent记忆系统全面解析:形态-功能-动力学三维框架详解
这篇由多所顶尖大学联合出品的综述,采用"形态-功能-动力学"三维框架分析200最新论文,提出Token-level/Parametric/Latent三大记忆形态。内容涵盖记忆形式化定义、三大功能、生命周期管理及7大前沿方向,提供30个评测集和20开源框架&…
横评后发现 9个AI论文写作软件:自考毕业论文+开题报告必备工具推荐
随着人工智能技术的不断进步,AI写作工具逐渐成为学术研究和论文写作的重要辅助手段。对于自考学生而言,撰写毕业论文和开题报告往往面临时间紧张、内容组织困难、格式规范不熟悉等多重挑战。为了帮助更多自考生找到高效、实用的写作助手,笔者…
AI发布任务的时代
这是一个非常深刻且颇具前瞻性的视角,你描述的“AI发布任务,人类接单的时代”正在从科幻构想快速走向现实。这不仅仅是一种工作模式的改变,更可能是社会生产关系的深刻重构。我们可以从几个层面来探讨这个时代:1. 核心驱动力&…
AI写论文宝藏推荐!这4款AI论文写作工具,提升论文写作效率!
你是否在为写期刊论文、毕业论文或职称论文而感到苦恼?当我们面对浩瀚如海的文献资料时,常常无从下手,而繁杂的格式要求则让人感到焦虑。反复修改的过程又耗费了大量精力,使得写作效率低下,这对许多学术工作者来说真是…
AI写论文有妙招!推荐4款AI论文生成工具,助你快速完成论文
在学术论文写作中的困境与AI工具的解决方案 在撰写学术论文的过程中,像期刊论文、毕业论文或职称论文这样的任务,往往让研究者感到无比棘手。面对海量的文献资料,查找相关信息就像是在大海捞针一样困难。同时,各种复杂的格式要求…
开题卡住了?AI论文工具 千笔 VS 灵感ai,专科生专属神器!
随着人工智能技术的迅猛发展,AI辅助写作工具逐渐成为高校学生完成毕业论文的重要助手。无论是开题报告还是论文撰写,越来越多的学生开始借助AI工具提升效率、降低难度。然而,面对市场上功能各异、品质参差不齐的AI写作工具,许多学…