安装selenium和下载webdriver

安装selenium

  • pip install selenium
  • pip install selenium  -U  (判断是否有最新版本)

下载driver

Google: http://npm.taobao.org/mirrors/chromedriver/ 或者是 https://chromedriver.storage.googleapis.com/index.html 打开找到对应的浏览器驱动下载

firefox:https://github.com/mozilla/geckodriver/releases打开找到对应的浏览器驱动下载

一个百度小demo

#!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ =
__Time__ = 2020/6/17 13:48
__Author__ = xinhua
__Blog__ = https://www.cnblogs.com/xinhua/
"""
import time from selenium import webdriver # 加载浏览器驱动
driver = webdriver.Chrome(r"C:\python3.6\chromedriver.exe") # 访问网址
driver.get("http://www.baidu.com") # 找到搜索框
inputElement = driver.find_element_by_id("kw") # 输入搜索内容
inputElement.send_keys("xinhua19") # 找到搜索按钮
searchElement = driver.find_element_by_id("su") # 点击搜索按钮
searchElement.click() time.sleep(5) # 释放资源, 退出浏览器
driver.quit()

总结

可以看到,流水账式写Web自动化测试代码的顺序就是:加载驱动 - 访问链接 - 页面操作

元素定位八种方式

首先我们可以搭建1个禅道,后续演示可以使用禅道,禅道地址是IP:port/zentao,禅道搭建方法可以参考我的另外一篇博客https://www.cnblogs.com/xinhua19/p/13151296.html

方法一 :通过元素id定位

 # 找到id=account的元素
username = driver.find_element_by_id("account")
# 输入值
username.send_keys("admin")

知识点:在前端,一般id是唯一的,只属于1个元素,通过id定位到的元素是唯一的

方法二:通过元素的class

 # 通过 元素Class查找(仅返回匹配到的第一个)
username = driver.find_element_by_class_name("form-control")
username.send_keys("admin")

知识点

  • 在前端,一般多个元素共用一个class
  • 但 find_element_by_class_name 只返回第一个匹配到class的元素
  • 坏处:当找不到元素则报错
  • 如果想返回所有匹配到class的元素,可看下面代码
 elements = driver.find_elements_by_class_name("form-control")
for i in elements:
print(i)

知识点

  • 返回的是一个元素列表,若只匹配到一个也是列表
  • 好处:当没有找到元素时不会报错,而是返回空列表 []

方法三:通过元素的name

 # 通过 元素name查找元素(仅返回匹配到的第一个)
password = driver.find_element_by_name("password")
password.send_keys("")

知识点

  • 和class一样,也有可能有多个元素共用一个name
  • 但  find_element_by_name  只返回第一个匹配到name的元素
  • 想返回多个的话,和class一样,需要调用 find_elements_by_name 方法,这里不再赘述,写法和上面一致

方法四:通过元素标签tag_name

 # =====通过 元素标签(仅返回匹配到的第一个)=====
p = driver.find_element_by_tag_name("th")
# 打印元素的文本值
print(p.text) print("===分割线")
# =====通过 元素标签(返回匹配到的所有元素)=====
ps = driver.find_elements_by_tag_name("th")
for p in ps:
print(p.text)

执行结果

 用户名
===分割线
用户名
密码

知识点

  • 多个元素同种HTML标签见怪不怪了
  • 同样的, find_element_by_tag_name 返回第一个匹配到标签的元素
  • find_elements_by_tag_name 可以返回所有匹配到标签的元素

方法五:通过超链接文本link_text(精确匹配)

atext = driver.find_element_by_link_text("创建账号")

  • find_element_by_link_text 是精确匹配,需要文本完全相同才能匹配
  • 若需要返回全部匹配到的元素,也需要用 find_elements_by_link_text

方法六:通过超链接文本(模糊匹配)

# =====通过 超链接的文本查找元素(支持模糊匹配)

atext = driver.find_element_by_partial_link_text("肺炎")

  • find_element_by_partial_link_text 支持模糊匹配,包含文本则匹配成功
  • 若需要返回全部匹配到的元素,也需要用  find_elements_by_partial_link_text

方法七:通过xpath(万能,重点)

 # 通过xpath
lis = driver.find_element_by_xpath('//ul[@class="timeline timeline-sm"]/li/a[@href="/zentao/tutorial-index--createAccount.html"]')

方法八:通过CSS选择器(万能,重点)

 # 通过css
lis = driver.find_element_by_css_selector('a[href="/zentao/tutorial-index--createAccount.html"]')
print(lis.text)

其中Xpath,CSS包含的知识点很多,后续再讲

selenium(1)-详细解读元素定位的八种方式的更多相关文章

  1. Selenium Webdriver元素定位的八种常用方式

    楼主原创,欢迎学习和交流,码字不容易,转载请注明出处,谢谢. 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素 ...

  2. Selenium Webdriver元素定位的八种常用方法

    如果你只是想快速实现控件抓取,而不急于了解其原理,可直接看: http://blog.csdn.net/kaka1121/article/details/51878346 如果你想学习web端自动化, ...

  3. Selenium Webdriver元素定位的八种常用方式(转载)

    转载自 https://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或 ...

  4. 爬虫-【selenium—Webdriver元素定位的八种常用方式

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  5. Selenium Webdriver元素定位的八种常用方式【转】

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  6. 史上最全!Selenium元素定位的30种方式

    Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控制,我在这里将对各种元素定位方式进行总结归纳一下. 这里将统一使用百度 ...

  7. Selenium元素定位的几种方式

    一.通过id查找 例:<input id="kw" name="wd" class="s_ipt" value="" ...

  8. [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位

    无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元 ...

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

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

随机推荐

  1. centos 7 vscode cmake 编译c++工程

    一.环境说明 1)gcc/g++  cmake安装建议 gcc/g++内核自带的即可,如果需要新的自行安装, cmake也一样,如有需要新的版本自行安装. 2)vscode安装插件 必要的插件c/c+ ...

  2. Kubernetes学习笔记(八):Deployment--声明式的升级应用

    概述 本文核心问题是:如何升级应用. 对于Pod的更新有两种策略: 一是删除全部旧Pod之后再创建新Pod.好处是,同一时间只会有一个版本的应用存在:缺点是,应用有一段时间不可用. 二是先创建新Pod ...

  3. [书籍分享]0-008.商业模式新生代[Business Model Generation]

    封面 内容简介 <商业模式新生代>内容简介:当你愉快的看完第一章:商业模式画布,赫然发现这些构成要素全都交织成一幅清晰的图像在脑海中呈现,它们如何互相影响.如何交互作用全都历历在目.利用商 ...

  4. 创建HttpFilter与理解多个Filter代码的执行顺序

    1.自定义的HttpFilter,实现Filter接口 HttpFilter package com.aff.filter; import java.io.IOException; import ja ...

  5. 07 . Python3函数

    Python3函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print().我们可以直接调用 ...

  6. 03 . MysSQL权限和备份

    MySQL权限介绍 mysql中存在4个控制权限的表,分别为 user db tables_priv columns_priv 用户和权限内容放在mysql库中,该库中有一张名为user的表,记录了用 ...

  7. 多服务器 vps 管理方法,十款远程桌面软件测评分析

    作为运维工作者,从几年前巨大的工作量到如今有了极大的改善,这些年试用的远程桌面管理软件不在少数. 远程桌面是微软公司为了方便网络管理员管理维护服务器而推出的一项服务.从windows 2000 ser ...

  8. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  9. MD5安全吗?

    MD5的破解方法目前分为两类:一类为彩虹表破解:一类为专业的MD5破解站点. 1.彩虹表 彩虹表是一个庞大的.针对各种可能的字母组合预先计算好的哈希值的集合.彩虹表不仅针对MD5算法,主流的算法都有对 ...

  10. Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列

    正整数的摆动序列 问题描述 如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列.即 a[2i]<a[2i-1], a[2i+1]>a[2i]. 小明想知道,长度为 m ...