介绍
测试的系统:白月黑羽网站的测试系统(白月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 自动化测试工具实战项目(窗口切换)
张小明
前端开发工程师
Alchemical Analysis:一站式自由能后处理工具(参数详解与可视化输出)
深度解析 Alchemical Analysis:炼金自由能计算的一站式后处理神器 在药物设计和分子动力学模拟中,炼金自由能计算(Alchemical Free Energy Calculations) 是评估结合亲和力(binding affinity)或溶剂化能的…
Bayes-CNN贝叶斯优化卷积神经网络多输入单输出回归预测(Matlab) 1
Bayes-CNN贝叶斯优化卷积神经网络多输入单输出回归预测(Matlab)1.命令窗口输出MAE、MSE、RMSEP、R^2、RPD和MAPE 2.贝叶斯优化算法优化参数为学习率、批处理样本大小和、正则化参数。 3.输入6个特征,输出1个变量直接上干货,今天咱…
Modbus RTU源码(C#开发) - 多行业稳定运行实例,详尽注释二次开发便利,适用于Vi...
ModbusRTU源码(c#开发) C#开发,示例源码。 本项目为VS2010开发,可转换为VS其他版本的编辑器打开项目。 已应用到多个行业的几百个应用现场,长时间运行稳定,可靠。 本项目为ModbusRTU的软件开发源码…
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
为加强扬州市网络和数据安全技术支撑体系建设,提升网络和数据安全应急处置和风险防范能力,扬州市委网信办公开遴选2026年度网络和数据安全服务资源池单位。经自主申报、资质审查、专家评议等环节,最终确定包括聚铭网络在内的24家企业入选《20…
AI实战:念念不忘小程序上线啦,带你重温美好时光
还在担心珍贵瞬间被遗忘?微信小程序「念念不忘」正式上线!AI智能分析你的照片,自动生成百字回忆——时间、地点、人物、故事,一键呈现。首页每日推送一张专属老照片,生日前两周自动展示靓照,纪念日临近也能…
2026别错过!8个降AI率软件降AIGC网站评测:自考论文降重全攻略
在2026年,随着AI技术的不断进步,学术论文中AI生成内容(AIGC)的比例也在逐年上升。对于自考学生而言,如何有效降低论文的AIGC率、去除AI痕迹并优化查重率,已成为一项关键任务。传统的人工修改方式不仅耗时耗…