iframe\句柄\鼠标键盘是一些比较特殊的事件,需要特殊处理

目录

1、iframe

2、句柄(handle)

3、鼠标键盘

1、iframe

iframe 是内嵌的网页元素,也可以说是内嵌的框架,我们需要先切换到iframe上面,才能对元素进行操作,若需要再操作不在iframe上的元素需要切换topwindow

001、判断是否有iframe

至于在不在iframe上面,通过firepath看一下是不是topwindow,如果不是就是在iframe上面

iframe一般有2种,一种是有id,一种没有id

002、有id的通过id来定位

driver.switch_to_frame(“id属性值”)

  

003、无id的通过tag name定位,然后切换

m=driver.find_element_by_tag_name(“iframe”)
driver.switch_to_frame(m)

特别的,有多个无id的iframe,可通过索引来定位

m=driver.find_element_by_tag_name("iframe")[0]
switch_to.iframe(m)

004、操作完iframe上的元素后,需要操作不在iframe上的元素,需要切回topwindow,再操作

driver.switch_to_default_content()

 特别的,有多个iframe,需要一层一层的定位进去;需要切换回上一个iframe,可以用

driver.switch_to.parent_frame() 

注:switch_to_frame()上面会有横线,可以写成driver.switch_to.frame(),就没问题了

2、句柄(handle)

再调试的时候,如果点开的是一个链接,则可以手动拖动下,看他是否会重新打开一个窗口,如果会,则他就是另一个句柄了。浏览器窗口的属性,用句柄来识别

001、打印当前句柄

m=driver.current_window_handle
print m

002、获取所有句柄

m=driver.window_handles
print m
'''获取第二个句柄’‘’
print m[1]

003、如果不等于当前句柄就切换

h = driver.current_window_handle
all_h = driver.window_handles
for i in all_h:
if i!=h;
driver.switch_to.window(i)

 

driver.switch_to.window(h) #切换回首页

3、鼠标键盘

001、键盘事件

一般在浏览器中会有一个输入完就回车的动作submit()

driver.find_element_by_name("password").sendkeys()
driver.find_element_by_name("password").submit()

如果submit()提交不了的话,可以导入键盘事件模块

导入:

from selenium.webdriver.common.keys import Keys

键盘操作有单个输入和组合输入

单个输入

如enter:send_keys(keys,ENTER)

制表键 Tab: send_keys(Keys.TAB)

空格键:send_keys(Keys.SPACE)

组合输入

如复刢 Ctrl+C:send_keys(Keys.CONTROL,'c') ,其他组合键类似

可以将剪切、复制、粘贴组合使用。

002、鼠标事件

导入:

from selenium.webdriver.common.action_chains import ActionChains

 鼠标事件后,都需要有一个执行的动作perform(),最常见的鼠标动作就是悬停move_to_element()

a、悬停事件

mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()

b、拖动事件

从源路径将鼠标滑动拖到目标路径

source = driver.find_element_by_id("xxx")
target = driver.find_element_by_id("xxx")
ActionChains(driver).drag_and_drop(source, target).perform()

  

  

UI自动化之特殊处理一(iframe\句柄\鼠标键盘)的更多相关文章

  1. python UI自动化之切换iframe

    python+selenium写UI自动化的时候,经常会遇到需要切换iframe的情况,这里介绍几种切换iframe的方式 1.使用id定位 driver.switch_to.frame(" ...

  2. ui自动化笔记 selenium_webdriver,ui自动化框架(web)

    Selenium学习笔记 selenium webdriver是业界公认ui自动化测试的标准,其封装的api可以对浏览器的任何地方进行操作 selenium2.0和selenium3.0的区别? 3. ...

  3. Python—UI自动化完整实战

    实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...

  4. robot framework UI自动化之登录

    前面已写环境的搭建,接下来就可以直接进行UI自动化的编写工作了 目录 1.准备工作 2.了解定位 3.一个登录案例 1.准备工作 第一步:需要使用chrome浏览器来测试,因此首先要有一个驱动,下载好 ...

  5. UI自动化之8种基础定位

    UI自动化的核心在于定位 目录 1.8种基础定位方法 2.xpath定位 3.css定位 4.多组元素 1.8种基础定位方法 driver.find_element_by_id() #id定位 dri ...

  6. UI自动化处理文件上传

    UI自动化处理文件上传 import win32guiimport win32con def set_uploader(self, file_path): sleep(2) self.file_pat ...

  7. 基于python2+selenium3+pytest4的UI自动化框架

    环境:Python2.7.10, selenium3.141.0, pytest4.6.6, pytest-html1.22.0, Windows-7-6.1.7601-SP1 特点:- 二次封装了s ...

  8. Python结合Pywinauto 进行 Windows UI 自动化

    转:Python结合Pywinauto 进行 Windows UI 自动化 https://blog.csdn.net/z_johnny/article/details/52778064 说明:Pyw ...

  9. UI自动化,你值得拥有

    去年春节联欢晚会,为了那张“敬业福”,全家都卯足了劲儿“咻一咻”,连节目都顾不上看了.当时我就想,要是能自动化该多好,不停点击屏幕,屏幕不疼手还疼呢,何况还不好分心,生怕错过了“敬业福”.玩“咻一咻” ...

随机推荐

  1. JavaScript回顾

    JavaScript是Web编程语言. JavaScript是一种基于对象的脚本语言 它是解释执行的 在客户端的浏览器中运行 可以被嵌入HTML文件中 代码以纯文本的形式存储在文件中 可以使用任何一种 ...

  2. JAVA中自定义properties文件介绍

    Gradle中的使用 1. 使用gradle.properties buid.gradle 和 gradle.properties可以项目使用,在同一个项目中,build.gradle可以直接获取其同 ...

  3. SQLSERVER还原数据库失败:错误: 3154

    在SQL Server 2008版本中还原从sql server 2005备份出来的数据库时,提示错误:“备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异 ...

  4. C#人民币金额大写转换

    人民币金额大小写转换,三行代码 //完善了一下查询到的方法,支持小数,保留2位小数 public string NumGetStr(double Num) { string[] DX_SZ = { & ...

  5. 【学习】021 Nginx

    nginx入门 什么是nginx? nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试ngi ...

  6. 微信小程序开发-入门到熟练(wepy-初级篇)

    Title:最近做完了项目,review代码的同时,就想写一篇详细的小程序开发经历,记录自己的项目从0到1的过程 Desc : 小程序从0到1,从小白到完成项目,你需要这样做: step1: 基础知识 ...

  7. 可决系数R^2和方差膨胀因子VIF

    然而很多时候,被筛选的特征在模型上线的预测效果并不理想,究其原因可能是由于特征筛选的偏差. 但还有一个显著的因素,就是选取特征之间之间可能存在高度的多重共线性,导致模型对测试集预测能力不佳. 为了在筛 ...

  8. python数据探索与数据与清洗概述

    数据探索的核心: 1.数据质量分析(跟数据清洗密切联系,缺失值.异常值等) 2.数据特征分析(分布.对比.周期性.相关性.常见统计量等) 数据清洗的步骤: 1.缺失值处理(通过describe与len ...

  9. 使用Spring.Net进行Webservice开发&发布遇到的问题

    发布遇到的问题1: HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理. 最终解决时IIS的设置情况: 1.应用程序池的高级设置中 启用32 ...

  10. PHP入门培训教程 php动态网页怎么转换成html

       当动态网页遇上搜索引擎 虽然动态网页相比于静态页面拥有许多优势,但它在搜索引擎的检索上却碰了个大钉子.无论任何一家网站,尤其是那些以营销为目的的企业网站,没有谁会希望自己的网页无法被搜索引擎检索 ...