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()

  

  

最新文章

  1. Yii2 关闭和打开csrf 验证 防止表单多次重复提交
  2. @RequestMapping(value = "{adminPath}")
  3. 利用matlab摄像机标定
  4. Jump Game 的三种思路 - leetcode 55. Jump Game
  5. ngrok 外网访问小能手
  6. C#进阶系列——WebApi身份认证解决方案:Basic基础认证 (转)
  7. CodeForces 628D Magic Numbers (数位dp)
  8. Android远程图片获取和本地缓存
  9. Chrome 扩展程序 CrxMouse 优化版 v3.0.1
  10. TreeSet具体应用
  11. hdu 4611
  12. dom4j的用法
  13. SQLSERVER图片查看工具SQL Image Viewer5.5.0.156
  14. css2.1实现圆角边框
  15. D3 learning notes
  16. Linux中目录以及路径问题
  17. http协议返回码
  18. Java项目收藏
  19. UVA 11990 `Dynamic'' Inversion CDQ分治, 归并排序, 树状数组, 尺取法, 三偏序统计 难度: 2
  20. 12.23daily_scrum

热门文章

  1. vue filters过滤
  2. fastadmin 搭建到云虚拟主机
  3. Educational Codeforces Round 68 (Rated for Div. 2) C. From S To T (字符串处理)
  4. 写了一个简单可用的IOC
  5. C#基础知识之父子类,实例、静态成员变量,构造函数的执行顺序(经典示例)
  6. Ubuntu安装SFTP服务,及启动失败处理
  7. 绑定class -vue
  8. 《转》tensorflow学习笔记
  9. postman-关联
  10. 2017年cocoaPods 1.2.1升级