如有任何学习问题,可以添加作者微信:lockingfree

目录

万能的XPath

XPath即XML路径语言,支持从xml或html中查找元素节点,使用XPath完全可以替代其他定位放式,如:

  • find_element_by_xpath('//*[@id=""]')等同于find_element_by_id("")
  • find_element_by_xpath('//*[@name=""]')等同于find_element_by_name("")
  • find_element_by_xpath('//*[@class=""]')等同于find_element_by_class_name("")
  • find_element_by_xpath('//标签名')等同于find_element_by_tag_name("标签名")
  • find_element_by_xpath('//a[contains(text(),"")]')等同于find_element_by_link_text("")
  • find_element_by_xpath('//*[@id=""]')等同于find_element_by_partial_link_text("")

需要通过一组元素或分层定位的也可以直接使用XPath直接定位到

从浏览器复制出的XPath有可能不靠谱,所以我们要学会XPath的语法

路径

  • /绝对路径: /html/body/div
  • //相对路径: //div/form //*/form 路径中可以使用 *代表任意标签
  • .当前路径: //div/form/. 等同于//div/form
  • ..上级路径: //div/form/.. 等同于//div

索引

  • 从1开始: /html/body/div[2] //div[1]/form

属性

  • @属性名:定位包含特定属性名的标签, 如//input[@class]
  • @属性名="属性值":定位特定属性名=属性值的标签,如//input[@id="kw"]
  • @*="属性值":定位任意属性名=属性值的标签, 如 //input[@*='kw']
  • 多属性结合定位://input[@id="kw" and @class='kw-class']//input[@id="kw"][@class="kw-class"] (and处也支持使用or,表示或)

函数

  • text():标签中的文本值,如//a[text()="百度首页走起~"]
  • contains(): 包含,如//a[contains(text(), "百度首页")]
  • starts-with(): 以**开头,如//a[starts-with(text(), "百度"]
  • last(): 最后一个, 如//div[last()]

  • parent: 父标签
  • child:子标签
  • following: 后面的,如://*[text()="用户名"]/following::input[1] # 紧邻文本为用户名的输入框
  • preceding:前面的

示例:

from selenium import webdriver

browser = webdriver.Chrome()
browser.maximize_window()
browser.get("http://115.28.108.130/control.html")
browser.implicitly_wait(10) div = browser.find_element_by_xpath("/html/body/div/form/div[2]")
print(div.text)

练习:

打开http://115.28.108.130/control.html,点击表格中王五(顺序不固定)后面的查看链接

弹出框处理

allert警告框

alert = driver.switch_to.alert()
alert.accept() # 确认 或alert.dismiss() 关闭

confirm确认框

confirm = driver.switch_to.alert()
confirm.accept() # 确认 或alert.dismiss() 取消

propmt提示框

propmt = driver.switch_to.alert()
propmt.send_keys() 输入
propmt.accept() # 确认 或alert.dismiss() 关闭

练习:

打开网址,分别点击下方的alert, confirm,propmt按钮,并处理对话框

模态框

直接定位即可

练习:

打开百度首页,点击登录,点击用户名密码登录(可直接定位点击)

授权对话框

在打开的url中使用用户名和密码打开,格式如下

http://use:password@www.***.com

框架页面处理

  • iframe: 嵌入在网页body中的单独框架(框架拥有一套独立的html代码)
  • frameset: 框架组,包含多个frame
  • frame:每个frame引用一个独立的网页

因为frame/iframe框架是一套独立的网页,因此frame/iframe中的元素不能直接定位到

  • driver.switch_to.frame(name/id/index/Element)

    • name: frame/iframe的name属性
    • id: frame/iframe的id属性
    • index: 如:0,第一个frame
    • Element: 定位到的frame/iframe,再切换到指定frame
  • driver.switch_to.parent_frame(): 切换到父级frame, 子frame之间不能相互切换
  • driver.switch_to.default_content(): 跳出所有frame

示例:

from selenium import webdriver
from time import sleep browser = webdriver.Chrome()
browser.maximize_window()
browser.get("http://www.w3school.com.cn/tiy/t.asp?f=html_frame_mix") browser.switch_to.frame("i") #总的frame
browser.switch_to.frame(0)
print(browser.find_element_by_tag_name("h3").text)
browser.switch_to.parent_frame()
browser.switch_to.frame(1)
print(browser.find_element_by_tag_name("h3").text)
browser.switch_to.parent_frame()
browser.switch_to.frame(2)
print(browser.find_element_by_tag_name("h3").text)
browser.switch_to.default_content()

练习:

打开http://mail.qq.com并使用用户名密码登录qq邮箱

此为北京龙腾育才 Python高级自动化(Selenium部分)授课笔记

课程介绍

想要参加现场(北京)/网络课程的可以联系作者微信:lockingfree

  1. 高效学习,快速掌握Python自动化所有领域技能
  2. 同步快速解决各种问题
  3. 配套实战项目练习

Selenium自动化测试第一天(下)的更多相关文章

  1. Selenium自动化测试第二天(下)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  2. Selenium自动化测试第一天(上)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  3. Selenium自动化测试第二天(上)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  4. 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)

    1.简介 Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件.由于现在企业和公司中Java的大部分项目都是基 ...

  5. 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...

  6. 《Selenium自动化测试实战》新书上市,有需要朋友们可以了解下,欢迎大家多提宝贵意见

    京东:https://item.jd.com/13123910.html当当:http://product.dangdang.com/29204520.html 1. 本书基于 Python 3.8 ...

  7. Python网络数据采集7-单元测试与Selenium自动化测试

    Python网络数据采集7-单元测试与Selenium自动化测试 单元测试 Python中使用内置库unittest可完成单元测试.只要继承unittest.TestCase类,就可以实现下面的功能. ...

  8. Selenium自动化测试框架入门整理

    ​​关注嘉为科技,获取运维新知 本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明.作为开发人员.测试人员入门参考. 本文参考:Se ...

  9. Selenium自动化测试Python一:Selenium入门

    Selenium入门 欢迎阅读Selenium入门讲义,本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识. 自动化测试的基础 在Selenium的课程以前,我们先回顾一下软件 ...

随机推荐

  1. 用DecimalFormat格式化十进制数字的实际应用

    在项目中,有时候我们需要将数字转换成特定的格式便于操作和使用.最常用的就是在操作价格数字的时候,需要将数字转换成小数点后保留两位小数,比如讲3.4转换成3.40 我们可以用DecimalFormat, ...

  2. TCP Congestion Control

    TCP Congestion Control Congestion occurs when total arrival rate from all packet flows exceeds R ove ...

  3. java 时间日期

    Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date ...

  4. PL/SQL添加Oracle对象

    1.首先用system的身份进入数据库 2.找到user文件夹 3.右击新建用户 在“创建用户”窗口中,输入新用户的名称.口令,默认表空间.临时表空间等 4.赋予新用户权限,赋予其角色权限:conne ...

  5. PX4地面站QGroundControl在ubuntu下的安装

    1.引言 相信很多玩开源无人机的朋友手上都有一架无人机,而不是仅仅停留在理论的学习和程序的学习.放飞自己组装的无人机才是乐趣所在,那么这本文就介绍玩无人机必不可少的地面站软件qgroundcontro ...

  6. iOS多语言设置

    最近公司做的项目需要向国外推广,因此app需要添加相应的语言设置,为此整理记录下多语言设置的过程.如有不对的地方,欢迎各位大神指正.下面就详细介绍下设置的过程: 1.基本设置 第一步:首先在 项目工程 ...

  7. luajit 64位 for cocos2dx 编译ios解决方法

    最近luajit发布了64位beta版,由于appstore上线必须是64位的应用,而且我的游戏项目用到lua脚本,所以必须要用到64位的luajit来编译lua脚本. 方法如下: 在luajit官网 ...

  8. 基于jQuery+JSON的省市县 二级 三级 联动效果

    省市区联动下拉效果在WEB中应用非常广泛,尤其在一些会员信息系统.电商网站最为常见.开发者一般使用Ajax实现无刷新下拉联动.本文将讲述,利用jQuery插件,通过读取JSON数据,实现无刷新动态下拉 ...

  9. Ubuntu18.04安装完应该做的一些事 显卡驱动安装和cuda8.0

    博主装Ubuntu18.04主要是为了用于跑深度学习,所以我们先来搞搞gcc环境 第一步:安装多版本gcc.g++可切换 sudo apt-get install gcc-4.8 gcc-4.8-mu ...

  10. iOS 12 真机调试 Xcode 9 提示 Could not locate device support files.

    升级 iOS 12 之后,使用 Xcode 9 真机调试会提示错误: Could not locate device support files. This iPhone 6 Plus is runn ...