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 学习笔记(二)的更多相关文章

  1. selenium webdriver学习(二)————对浏览器的简单操作(转载JARVI)

    selenium webdriver学习(二)————对浏览器的简单操作 博客分类: Selenium-webdriver   selenium webdriver对浏览器的简单操作 打开一个测试浏览 ...

  2. selenium webdriver 学习笔记(三)

    selenium webdriver 一.上传文件操作 上传文件夹一般要打开一个本地窗口,从窗口选择本地文件添加.所以一般会卡在如何操作本地窗口添加上传文件. 其实,在selenium webdriv ...

  3. selenium webdriver 学习笔记(一)

    selenium webdriver 第一个脚本: #coding = utf-8 from selenium import webdriver import time url = "htt ...

  4. Selenium WebDriver 学习笔记

    1. 打开VS2012 2. 新建工程(单元测试工程或控制台程序都可以, 看需求) 3. 工具->NuGet程序包管理器->程序包管理器控制台 4. 输入"Install-Pac ...

  5. Selenium webdriver 学习总结-元素定位

    Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...

  6. Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )

    !/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...

  7. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  8. Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...

  9. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

随机推荐

  1. 蜗牛爱课 -- iOS 设计模式之模板模式

    1 前言 模板方法模式是面向对象软件设计中一种非常简单的设计模式.其基本思想是在抽象类的一个方法定义“标准”算法.在这个方法中调用的基本操作由子类重载予以实现.这个方法成为“模板”.因为方法定义的算法 ...

  2. GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。

    GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...

  3. Qt使用快捷键

    在说快捷键之前先来说一个QtCreator调试的过程中经常发生的一个问题. 问题描述: 用QtCreator建立了一个纯C++的项目,但是在F5调试时,竟然提示ptrace不允许的操作,修改工程配置为 ...

  4. HTML 5 学习之应用程序缓存

    什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓存为应用带来三个优势: 离线浏 ...

  5. Linux 计算某文件夹下的所有文件的md5值

    使用find 命令 find /root -type f -print0 |xargs -0 md5sum >a.md5 校验的话 md5sum -c a.md5

  6. 了解神奇的this

    this的用法 在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了. 因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下环境.举例说 ...

  7. MySQL----information-schema数据库相关权限的说明。

    MySQL中的information_schema数据库比较特别有如下几个要注意的地方. 1.就算是一个新创建的用户,也就是说这个用户只有一个usage权限.它都可以查看informatoin_sch ...

  8. POC- Proof of Cocept -- 概念验证

    POC,是Proof of Concept的缩写,意思是为观点提供证据,它是一套建议的电子模型,实例化代码,它可用于论证团队和客户的设计,允许评估和确认概念设计方案,POC的评价可能引起规格和设计的调 ...

  9. heap creation

    There two methods to construct a heap from a unordered set of array. If a array has size n, it can b ...

  10. MSSQL查询连接数

    SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo].[SYS ...