selenium webdriver 学习笔记(二)
selenium webdriver
一、定位一组元素:
webdriver可以很方便的使用findElement 方法来定位某个物定的对象。不过有时候我们却要定位一组对象,这时候就需要使用findElements方法。
应用场景:
1. 批量操作对象,比如将页面上所有checkbox都选择上;
2.先获取一组对象,再在这组对象中过滤出需要定位的一些对象。比如定位页面上所有checkbox,然后再选择最后一个。
二、多层框架、窗口定位
switch_to_frame()
switch_to_window()
1. 多层框架定位
有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候要检查这个元素是否在一个frame中,selenium webdriver提供了一个switch_to_frame方法,可以很轻松的解决这个问题。
示例:
from selenium import webdriver
import time
import os
browser = webdrivers.Firefox()
file_path = 'file:///' + os.path.abspath('frame.html')
browser.get(file_path)
time.sleep(10)
#先找到frame文件
browser.switch_to_frame("f1")
browser.switch_to_frame("f2")
#然后就可以正常的操作元素了
browser.find.element_by_id("kw").send_keys("Python")
browser.find.element_by_id("su").click()
time.sleep(3)
browser.quit()
2. 多层窗口定位
有可能嵌套的不是框架,而是窗口,还有针对窗口的方法:
switch_to_window方法与switch_to_frame相同
示例:
driver.switch_to_window("windowName")
三、层级定位
在实际的测试中,可能会遇到这种问题:页面上有很多个属性基本相同的元素,现在家需要具体定到其中的一个。由于发生基本相当,所以在定位的时候会有些麻烦,这个时候就需要用到层级定位。先定位到父元素,然后再通过父元素定位到子元素。
from selenium.webdriver.supper.ui import WebDriverWait
webDriverWait(dr,10) #10s内每隔500ms扫描一次页面变化,当出现指定的元素后结束。
is_displayed() #该元素量是否用户可以见
class ActionChains(driver) #生成用户的行为。
move_to_element(menu) #移动鼠标到一个元素中,menu上面已经定义了它所指向的哪一个元素。
perform() #执行所有点存储的行为。
selenium webdriver 学习笔记(二)的更多相关文章
- selenium webdriver学习(二)————对浏览器的简单操作(转载JARVI)
selenium webdriver学习(二)————对浏览器的简单操作 博客分类: Selenium-webdriver selenium webdriver对浏览器的简单操作 打开一个测试浏览 ...
- selenium webdriver 学习笔记(三)
selenium webdriver 一.上传文件操作 上传文件夹一般要打开一个本地窗口,从窗口选择本地文件添加.所以一般会卡在如何操作本地窗口添加上传文件. 其实,在selenium webdriv ...
- selenium webdriver 学习笔记(一)
selenium webdriver 第一个脚本: #coding = utf-8 from selenium import webdriver import time url = "htt ...
- Selenium WebDriver 学习笔记
1. 打开VS2012 2. 新建工程(单元测试工程或控制台程序都可以, 看需求) 3. 工具->NuGet程序包管理器->程序包管理器控制台 4. 输入"Install-Pac ...
- Selenium webdriver 学习总结-元素定位
Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...
- Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )
!/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...
- Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...
- Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...
- Python3+Selenium3+webdriver学习笔记11(cookie处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...
随机推荐
- ARC、MRC混编
Xcode5之后,新建iOS工程,默认都是ARC模式,但是有时候我们的项目中需要用到一些第三方框架,我们下载下来却发现是非ARC的,这时候我们需要进行ARC和MRC混编. 第一种方式: Edit-&g ...
- DWZ 框架remote 验证字段唯一性方法提交后台,如果是中文会显示成乱码问题
关于jquery remote 验证字段唯一性方法提交后台,如果是中文会显示成乱码问题.可以直接修改tomcat 配置文件server.xml 设置 URIEncoding=utf-8属性,将ge ...
- Address already in use: JVM_Bind<null>:8080tomcat启动不了的问题
在MyEclipse启动或者是tomcat启动的时候出现:Address already in use: JVM_Bind<null>:8080 出现该异常,这里的8080是你的端口,有可 ...
- Android L 之 RecyclerView 、CardView 、Palette
转: http://blog.csdn.net/xyz_lmn/article/details/38735117 <Material Design>提到,Android L版本中新增了Re ...
- PHP面试题之算法解析
面试中经常被问到会什么算法,这里整合一些常见的算法及它们的实现原理.下面的例子都是经过测试可用的,如果有什么问题请告知!! 本人小白,如果有更好的实现方式,敬请赐教,感激不尽!!!! 冒泡排序,快速排 ...
- 将warning设为错误
在程序编写过程中,我们有时会因为现实情况将现在无法实现的部分功能设为warning #prama warning ------------------ 为了方便查找warning,或查看某部分的警告, ...
- python----iter\next
1.说明:__getitem__\setitem可以迭代,它已经不被推荐了:建议使用__iter__\next. 2.python会先去检查__iter__\next然后再去检查__getitem__ ...
- linux系统下安全管理
1.引导程序安全 linux系统的root密码是很容易破解的,当然前提是你没有设置引导程序密码,如GRUB或LILO,为了防止通过引导程序破译root密码,强烈建 议设置GRUB或LILO的引导密码, ...
- Oracle EBS-SQL (INV-5):检查期间拉式物料领用记录数.sql
select FU.description 操作者, KK.DESCRIPTION ...
- [Leetcode][Python]19: Remove Nth Node From End of List
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 38: Count and Sayhttps://oj.leetcode.co ...