selenium webdriver——多表单切换与多窗口切换
多表单切换
>>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe
表单内嵌页面上的元素无法直接定位。这时就需要通过suitch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面
中。
- #Author:xiaoxiao
- from selenium import webdriver
- def setUp(self):
- # 打开浏览器
- self.driver = webdriver.Firefox()
- self.driver.implicitly_wait(10)
- self.driver.get("http://photo.163.com")
- # 找到登录模块对应的iframe
- self.driver.switch_to.frame(self.driver.find_element_by_xpath("//div[@id='J-loginMod']//iframe"))
- self.driver.switch_to.frame("x-URS-iframe")
- # 找到账号输入框并输入账号
- userinput = self.driver.find_element_by_name("email")
- userinput.clear()
- userinput.send_keys("yeyll0630")
- # 找到密码输入框并输入密码
- pwinput = self.driver.find_element_by_name("password")
- pwinput.clear()
- pwinput.send_keys("abc123")
- # 找到登录按钮并点击
- loginbutton = self.driver.find_element_by_id("dologin")
- loginbutton.click()
- # 切换到主页面
- self.driver.switch_to.default_content()
多窗口切换
>>在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了
switch_to.window()方法,可以实现不同的窗口之间的切换。
- from selenium import webdriver
- def setUp():
- # 打开浏览器
- driver = webdriver.Firefox()
- driver.implicitly_wait(10)
- driver.get("http://photo.163.com")
- # 找到了解更多按钮并点击
- knowbutton = driver.find_element_by_link_text("了解更多")
- knowbutton.click()
- # 获取窗口句柄
- windowhanle = driver.current_window_handle #当前窗口句柄
- windowhanles = driver.window_handles #所有窗口句柄
- for handle in windowhanles: #循环切换至新打开窗口
- if handle != windowhanle:
- 16 driver.switch_to.window(handle)
- # 获取iphone按钮并点击
- iphonebutton = driver.find_element_by_id("J-iphone")
- iphonebutton.click()
selenium webdriver——多表单切换与多窗口切换的更多相关文章
- Selenium WebDriver多层表单切换
[Java] 首先 测试网站frame结构为 -topframe: -centerframe: -leftframe: -mainframe: -bottomframe: 我当时遇到的问题是,首先在c ...
- selenium+Python(表单、多窗口切换)
1.多表单切换 在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这 ...
- Python+selenium(多表单、多窗口切换)
多表单切换 案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作 Frame.html <html> <head> <title>Frame_test& ...
- Selenium:多表单(frame/iframe)切换(Switch模块)
frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...
- selenium基础(多表单切换、多窗口切换)
一.多表单的切换 frame:HTML页面中的一中框架,主要作用是在当前页面中指定区域显示另一页面元素: (HTML语言中,frame/iframe标签为表单框架) 在web ...
- python+selenium之多表单切换
在Web应用中经常会遇到fram/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于fram/iframe表单内嵌套页面上的元素无法直接定位.这是需要通过swit ...
- selenium多表单切换以及多窗口切换、警告窗处理
selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...
- python+selenium的frame表单切换
switch_to.frame() 切换frame switch_to.default_content() 切 ...
- 『心善渊』Selenium3.0基础 — 16、Selenium对iframe表单的操作
目录 1.什么是iframe表单 2.iframe表单操作流程 3.iframe表单操作常用方法 (1)进入表单 (2)多表单切换 4.表单操作示例 1.什么是iframe表单 实际上就是HTML页面 ...
随机推荐
- thinkphp 去掉URL 里面的index.php(?s=)
例如你的原路径是 http://localhost/test/index.php/home/goods/index.html 那么现在的地址是 http://localhost/test/home/g ...
- Miller-Rabbin 素性测试 和 Pollard_rho整数分解
今天学习一下Miller-Rabbin 素性测试 和 Pollard_rho整数分解. 两者都是概率算法. Miller_Rabbin素性测试是对简单伪素数pseudoprime测试的改进. (ps ...
- PHP读取文件的常见方法
整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件 ...
- 2018.6.19 Java核心API与高级编程实践复习总结
Java 核心编程API与高级编程实践 第一章 异常 1.1 异常概述 在程序运行中,经常会出现一些意外情况,这些意外会导致程序出错或者崩溃而影响程序的正常执行,在java语言中,将这些程序意外称为异 ...
- Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像(克隆和导入)
Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像: 注:直接复制一个.vdi 虚拟硬盘再挂上去就可以,但Virtualbox居然提示UUID重复,无法使用. 则,可以通过 ...
- thymeleaf获取当前时间并格式化输出
有时候会需要在模板中直接打印时间的需求,如果输出一个时间还需要在java类中去获取model的话,那未免也太麻烦了,以下为thymeleaf在模板中直接获取时间戳并格式化输的代码 获取时间戳 < ...
- Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
随着Jquery的作用越来越大,使用的朋友也越来越多.在Web中,由于CheckBox. Radiobutton . DropDownList等控件使用的频率比较高,就关系到这些控件在Jquery中的 ...
- 如何修改魔兽争霸war3分辨率
如何修改魔兽争霸war3 分辨率 有时候发现老电脑从XP系统升级到WIN7之后,发现玩魔兽不能全屏了(2边会有一些黑屏的).最后检查发现是魔兽在安装注册表之后显示的分辨率跟电脑的实际分辨率不同导致的. ...
- 【转】 bind1st bind2nd的使用
以前在使用stl的过程中发现bind1st和bind2nd这两个函数,当时不太理解什么意思,今天在网上查了一下相关资料发现竟然很简单,下面我就具体解释一下他们的用法. bind1st和bind2nd函 ...
- linux系统串口编程实例
在嵌入式开发中一些设备如WiFi.蓝牙......都会通过串口进行主机与从机间通信,串口一般以每次1bit位进行传输,效率相对慢. 在linux系统下串口的编程有如下几个步骤,最主要的是串口初始化! ...