selenium自动化实战-基于python语言(二: 编写脚本)

上一篇文章说到显示等待和隐式等待语句,我们继续学习下面的命令方法。

8.  定位一组元素

这里书上是自己写了一个页面代码,通过访问本地这个页面来举例。但我觉得找一个现有的页面自己琢磨更有意思,而且复杂的页面也会遇到复杂的问题。比如我根据163邮箱登录页面的 “十天内免登录” 复选框写了如下的代码:

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get(‘http://mail.163.com/‘)
driver.implicitly_wait(20) #这里加一个隐式等待命令,等待页面加载,不然可能会报错
driver.switch_to_frame(‘x-URS-iframe‘) #163邮箱登录页面的复选框在一个框架内,所以需要定位到该框架内

#选择页面上所有的tag name 为input的元素
inputs = driver.find_elements_by_tag_name(‘input‘) #一定要注意定位一组元素需要是 elements, 而不是element

#通过for循环找出type为checkbox的元素并且单击勾选
for i in inputs:
    if i.get_attribute(‘type‘) == ‘checkbox‘:
        i.click()
        time.sleep(1)
        
print(len(inputs)) #这里结果打印出来是9,所以在这个框架内复选框的个数应该是9,但是比较直观的我们只能看到“十天内免登录”

#driver.quit()

上面这段代码会勾选 “十天内免登录” 复选框,其实如果单纯实现这个行为有更简单的方法,但是这里只是为了理解定位一组元素的方法。下面介绍 pop() 方法:

获取一组元素中最后一个 pop() 或者 pop(-1) 例如: driver.find_element_by_id(‘xx‘).pop().click()
获取一组元素中的第一个 pop(0)  
获取一组元素中的第二个 pop(1)  

9. 多表单切换

  • 嵌套的iframe有 id 或 name: switch_to_frame(‘‘) 里面填写 id 或者 name。 这里书里写的是: switch_to.frame(),这两个方法我都试过了,全都是正确的。但还是建议用规范的写法:switch_to.frame()
  • 嵌套的iframe 没有 id 或 name:

.......

xf = driver. find_element_by_xpath(‘//*[@class="if"]‘)

driver.switch_to_frame(xf)

driver.switch_to.parent_frame() # 默认跳出离它最近的switch_to.frame() 方法

driver.switch_to.default_content() # 跳回最外层的页面

10. 多窗口切换

获得当前窗口句柄 current_window_handle 例如: search_window = driver.current_window_handle
返回所有打开的窗口的句柄到当前会话 window_handles 例如: all_handles = driver.window_handles
切换到相应的窗口 switch_to.window() 例如: driver.switch_to.window(search_window)
时间: 2024-10-31 02:15:22

selenium自动化实战-基于python语言(二: 编写脚本)的相关文章

selenium自动化实战-基于python语言(环境搭建)

在看过了<selenium 2自动化测试实战-基于python语言> 这本书之后,有一些自己发现的问题,在这里记录下来方便自己查阅,也希望大家指正或给出建议. Windows环境搭建: 1. 安装FireBug以及FirePath前端工具来帮助我们查看前端代码. 可以直接通过Firefox的添加插件直接安装,非常方便 IE以及Chrome等浏览器一般使用F12即可调出此类开发人员工具 2. 安装Python 通过python官网或者其他途径下载python安装包,我这里安装的是3.5 64bi

selenium自动化实战-基于python语言(三: 编写脚本)

继续webdriver的学习. 11. 警告框处理: switch_to_alert() 方法定位到alert/confirm/prompt,然后使用下面的方法进行操作 返回 alert/confirm/prompt 中的文字信息 text   接受现有警告框 accept() 举例:switch_to_alert().accept() 解散现有警告框 dismiss()   发送文本至警告框 send_keys(keysToSend)   12. 上传文件 send_keys(''): 和模拟

关于《selenium2自动测试实战--基于Python语言》

关于本书的类型: 首先在我看来技术书分为两类,一类是“思想”,一类是“操作手册”. 对于思想类的书,一般作者有很多年经验积累,这类书需要细读与品位.高手读了会深有体会,豁然开朗.新手读了不止所云,甚至会说,都在扯犊子,看了半天也不知道如何下手. 对于操作手册的书,一般会提供大量的实例,告诉你详细的步骤.对于高手来说,这不就是翻译了一下官方文档嘛,好意思拿来骗钱.但对于新手来说,反而认为是好处,跟着上面的步骤操作就掌握了某种技术能力. 显然,本书属于后者,书中提供了大量代码实例,并没有太多思想层面

selenium2自动化测试实战--基于Python语言

自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 集成测试是在单元测试的基础上,先通过单元模块组装成系统或子系统,再进行测试.重点是检查模块之间的接口是否正确. 1.1.3 系统测试 系统测试是针对整个产品系统进行的测试,验证系统是否满足需求规格的定义,以及软件系统的正确性和性能等是否满足其需求规格的要求. 1.1.4 验收测试 验收测试是部署软

基于python语言的Selenium自动化测试

  一.Selenium简介 Selenium是一个web自动化应用测试工具,还支持所有的web的管理任务自动化.并且开源免费,也是一个web自动化轻量级框架.它支持多种浏览器.跨平台.跨操作系统.支持多种编程语言编写脚本,还能进行分布式测试用例的执行. Selenium经历三个版本,Selenium1.Selenium2.Selenium3.它不是单独的一个工具,而是由一些类库.插件.工具等组合而成.主要的工具: Selenium IDE:Selenium IDE是嵌入火狐浏览器中的一个插件,

基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)

基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的人工智能技术的发展,传统的字符验证已经形同虚设. 所以,大家一方面研究和学习此代码时,另外一方面也要警惕自己的互联网系统的web安全问题. Keywords: 人工智能,Python,字符验证码,CAPTCHA,识别,tensorflow,CNN,深度学习 2   Introduction 全自动区

selenium2环境搭建----基于python语言

selenium支持多种语言如java.c#.Python.PHP等,这里基于python语言,所以这里搭建环境时需做俩步操作: ----1.Python环境的搭建 ----2.selenium的安装 1.安装Python 下载Python安装包---->安装----->验证是否安装成功 1.1下载安装Python安装包 版本为Python2.7.10,官网下载,官网地址为https://www.python.org/.到官网下载2.7.10版本,直接点击安装,安装的过程中勾选Enter fe

基于python语言的经典排序法(冒泡法和选择排序法)

前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 在之前,曾写过使用java和C语言实现该两种排序法,详情见https://www.cnblogs.com/hong-fithing/p/7615907.html 搭建环境,准备工作就不冗余介绍了,网上搜罗一大堆 目录 冒泡排序法 选择排序法 冒泡排序法 冒泡类似于汽水现象,摇动一下,就有很多泡往上冒

部署基于python语言的WEB发布环境

一.部署说明 1.python语言介绍 python简介 2.实验环境 实验机器:Vmware虚拟机 8核10G 网卡:桥接模式 系统:centos7.5 防火墙:关闭 Selinux:关闭 网段:192.168.10.0/25 WEB01:192.168.10.42 二.部署流程 Centos7.5 + Nginx + python + Django + uwsgi + mysql来部署网站(服务). 1.部署Nginx $ wget http://nginx.org/download/ngi