UI自动化测本质无非就是: 定位元素 -> 操作元素 -> 模拟页面动作 -> 断言结果 -> 生成测试报告。

所以我们做UI自动化的第一步就是定位元素,如果连元素都定位不到就更不必说接下来的操作。

本篇随笔便是关于Selenium八大元素定位方式,让你成功定位元素。

  1. find_element_by_id

    # -*- coding:utf-8 -*-
    # 作者:IT小学生蔡坨坨
    # 时间:2020/12/13 13:42 from selenium import webdriver
    import time driver = webdriver.Chrome() # 实例化 # demo01:
    # 打开云商网站
    driver.get("http://[服务器ip]/yuns/index.php")
    # 窗口最大化
    driver.maximize_window()
    time.sleep(2) # 点击我的购物车进行跳转
    driver.find_element_by_id('cart_num').click()
    time.sleep(2) # demo02:
    # 打开百度,搜索框中输入 软件测试,点击百度一下
    driver.get("http://www.baidu.com")
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys("软件测试")
    time.sleep(2)
    driver.find_element_by_id("su").click()
    time.sleep(3) driver.quit()
  2. find_element_by_name

    # -*- coding:utf-8 -*-
    # 作者:IT小学生蔡坨坨
    # 时间:2020/12/13 13:53 from selenium import webdriver
    import time driver = webdriver.Chrome()
    driver.get('http://[服务器ip]/yuns/index.php') time.sleep(2) # demo01:
    # 搜索框中输入耐克
    # 只有可输入的控件才能使用send_keys()方法,比如input控件。
    driver.find_element_by_name('key').send_keys('耐克')
    time.sleep(2) # demo02:
    # 清空搜索框中的信息
    driver.find_element_by_name("key").clear() time.sleep(3)
    driver.quit()
  3. find_element_by_class_name

    # -*- coding:utf-8 -*-
    # 作者:IT小学生蔡坨坨
    # 时间:2020/12/15 16:26 from selenium import webdriver
    import time driver = webdriver.Chrome() # 打开云商网站
    driver.get("http://[服务器ip]/yuns/index.php")
    driver.maximize_window()
    time.sleep(2) # demo01:
    # 搜索框中输入 女装
    driver.find_element_by_class_name("but1").send_keys("女装")
    time.sleep(2) # demo02:
    # 点击搜索
    driver.find_element_by_class_name("but2").click()
    time.sleep(3) # 注意:如果class name是一个复合类(带有空格),则无法定位到元素
    # 可以使用复合类的部分单词去定位,但是不建议,因为可能会定位到多个元素
    # driver.get("http://www.baidu.com")
    # time.sleep(2)
    # driver.find_element_by_class_name("bg s_btn btn_h btnhover") # NoSuchElementException driver.quit()
  4. find_element_by_link_text

    # -*- coding:utf-8 -*-
    # 作者:IT小学生蔡坨坨
    # 时间:2020/12/15 17:44 from selenium import webdriver
    import time driver = webdriver.Chrome() driver.get("http://[服务器ip]/yuns/index.php")
    driver.maximize_window()
    time.sleep(2) # demo01:
    # 点击 T恤男2016
    # 精确匹配超链接载体
    driver.find_element_by_link_text("T恤男2016").click()
    time.sleep(2) # demo02;
    # 点击联系客服
    driver.find_element_by_link_text("联系客服").click()
    time.sleep(2)
  5. find_element_by_partial_link_text

    from selenium import webdriver
    import time driver = webdriver.Chrome() driver.get("http://[服务器ip]/yuns/index.php")
    driver.maximize_window()
    time.sleep(2) # demo01:
    # 点击 9.9抢大牌
    # partial_link_text 模糊匹配超链接载体
    driver.find_element_by_partial_link_text("抢大牌").click()
    time.sleep(2) # demo02:
    # 点击 家装节
    driver.find_element_by_partial_link_text("家装").click()
    time.sleep(2) driver.quit()
  6. XPath定位详解及高级方法探究

# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 14:06 from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time driver = webdriver.Chrome()
# 打开云商网站
driver.get("http://[服务器ip]/yuns/index.php")
# 窗口最大化
driver.maximize_window()
time.sleep(2) # demo01:
# 绝对路径
# 搜索框输入 阿迪达斯
# XPath的下标是从1开始的
driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[1]/form/input[1]").send_keys("阿迪达斯")
time.sleep(2) # demo02:
# 绝对路径
# 点击搜索
driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[1]/form/input[2]").click()
time.sleep(2) # demo03:
# 绝对路径
# 点击 芭芭鸭
driver.find_element_by_xpath("/html/body/div[4]/div/div[2]/dl/dd/a[31]").click()
time.sleep(2) # demo04:
# 相对路径
# 搜索框输入 女装
# XPath相对路径以 // 开头,通过属性匹配 @class=
driver.find_element_by_xpath("//input[@class='but1']").send_keys("女装")
time.sleep(2) # demo05;
# 清空搜索框中的内容
# 通过多个属性匹配,使用and连接
driver.find_element_by_xpath("//input[@class='but1' and @name='key']").clear()
time.sleep(2)
# demo06:
# 搜索框输入 童装
# 通过属性模糊匹配 [contains(@属性名,'属性值')]
driver.find_element_by_xpath("//input[contains(@placeholder,'请输入')]").send_keys("童装") # demo07;
# 点击搜索
driver.find_element_by_xpath("//form/input[2]").click()
time.sleep(2) # demo08:
# 点击 我的购物车
driver.find_element_by_xpath("//div[@class='small_cart_name']/i").click()
time.sleep(2) # demo09:
# 点击现在就去购物
# 通过 * 匹配
driver.find_element_by_xpath("//*[@class='r']/a").click()
time.sleep(2) # demo10:
# 点击登录 跳转到登录页面
driver.find_element_by_xpath("//div/a").click()
time.sleep(2) # demo11:
# 输入用户名:
driver.find_element_by_xpath("//div[@class='binput']/input[@name='username']").send_keys("15059225599")
time.sleep(1) # demo12;
# 输入密码:123456
driver.find_element_by_xpath("//input[@name='password']").send_keys("123456")
time.sleep(1) # demo13:
# 点击登录按钮
driver.find_element_by_xpath("//input[@name='submit']").click()
time.sleep(2) # demo14:
# 点击我的订单
driver.find_element_by_xpath("//div[@class='help']/a[2]").click()
time.sleep(2)
# demo15:
# 点击收货地址
driver.find_element_by_xpath("//div[@class='left']/dl/dd[3]/a").click()
time.sleep(2) # demo16;
# 点击 新增收货地址
driver.find_element_by_xpath("//a[@id='add_address']").click()
time.sleep(2) # demo17;
# 输入姓名:蔡坨坨
driver.find_element_by_xpath("//input[@id='recive_name']").send_keys("蔡坨坨")
time.sleep(1)
# 输入手机:
driver.find_element_by_xpath("//input[@name='mobile']").send_keys("15059225599")
time.sleep(1) # 选择省市区
driver.find_element_by_xpath("//span[@class='area_name']").click()
time.sleep(2)
# 选择陕西省
driver.find_element_by_xpath("//div/a[27]").click()
time.sleep(2)
# 鼠标移到选择省市区
ele = driver.find_element_by_xpath("//span[@class='area_name']")
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2)
# 选择西安市
driver.find_element_by_xpath("//div[@class='conbox'][2]/a[1]").click()
time.sleep(2)
# 鼠标移到选择省市区
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2)
# 选择市辖区
driver.find_element_by_xpath("//div[@class='conbox'][3]/a[1]").click()
time.sleep(2) # 输入详细地址
driver.find_element_by_xpath("//input[@placeholder='收件人详细地址']").send_keys("西安")
time.sleep(1) # demo18:
# 点击确认,提示保存成功
driver.find_element_by_xpath("//div[2]/div/div[3]/a[2]").click()
time.sleep(3) driver.quit()
7. CSS定位详解及高级语法详解
# -*- coding:utf-8 -*-
# 作者:IT小学生蔡坨坨
# 时间:2020/12/13 14:07 from selenium import webdriver
import time driver = webdriver.Chrome() # 打开云商网站
driver.get("http://[服务器ip]/yuns/index.php")
driver.maximize_window()
time.sleep(2) # demo01:
# 绝对路径,使用 > 分隔,在搜索框中输入童装
# CSS Selector下标从1开始,跟XPath一样
driver.find_element_by_css_selector("html>body>div>div>div>div>form>input:nth-child(1)").send_keys("童装")
time.sleep(2) # demo02:
# 绝对路径,使用 空格 分隔,点击“家装节”进行跳转
driver.find_element_by_css_selector("html body div.logo_bar div div.sch div.schhot a:nth-child(2)").click()
time.sleep(2) # demo03:
# 绝对路径,使用 > 加 空格 分隔,点击“T恤男2016”进行跳转
driver.find_element_by_css_selector("html body div.logo_bar div > div.sch > div.schhot > a:nth-child(5)").click()
time.sleep(2) # demo04:
# 相对路径,通过class选择器定位元素,清空搜索框中的文本信息
# class选择器: .
driver.find_element_by_css_selector("input.but1").clear()
time.sleep(2) # demo05:
# 通过class选择器定位元素,在搜索框中输入女装
driver.find_element_by_css_selector(".but1").send_keys("女装")
time.sleep(2)
# demo06:
# 通过class选择器定位元素,点击搜索按钮
driver.find_element_by_css_selector(".but2").click()
time.sleep(2) # demo07:
# 通过id选择器定位元素,点击购物车
# id选择器: #
driver.find_element_by_css_selector("i#cart_num").click()
time.sleep(2) # demo08:
# first-child,点击首页跳转至首页
driver.find_element_by_css_selector(".help>a:first-child").click()
time.sleep(2) # demo09:
# 通过id选择器定位元素,点击购物车
driver.find_element_by_css_selector("#cart_num").click()
time.sleep(2) # demo10:
# last-child,点击联系客服进行跳转
driver.find_element_by_css_selector(".help>a:last-child").click()
time.sleep(2)
# demo11:
# 通过属性定位,注意与XPath区别,在搜索框输入拖鞋
driver.find_element_by_css_selector("input[placeholder='请输入你要查找的关键字']").send_keys("拖鞋")
time.sleep(2) # demo12:
# 通过多个属性定位,注意与XPath区别,清空搜索框中的文本信息
driver.find_element_by_css_selector("input[name='key'][class='but1']").clear()
time.sleep(2) # demo13:
# 倒序 nth-last-child(),点击首页进行跳转
driver.find_element_by_css_selector(".help>a:nth-last-child(3)").click()
time.sleep(2) # demo14:
# 在搜索框中输入球鞋
driver.find_element_by_css_selector("div[class='schbox']>form>input:nth-child(1)").send_keys("球鞋") # demo15:
# css_selector 不区分干儿子和亲儿子,
# 若一个标签下有多个同级标签,虽然这些同级标签的tag name不一样,但是他们是放在一起排序的
# 打开百度,在搜索框中输入 软件测试 ,点击百度一下
driver.get("http://www.baidu.com")
driver.maximize_window()
time.sleep(3)
driver.find_element_by_css_selector("form#form>span:nth-child(8)>input").send_keys("软件测试")
driver.find_element_by_css_selector("form#form>span:nth-child(9)>input").click()
time.sleep(3)
# 关闭当前窗口
driver.close()
time.sleep(3) # 关闭所有窗口
driver.quit()
  1. find_elements_by_tag_name

    tag = driver.find_elements_by_tag_name("input")

Selenium 八大元素定位方式的更多相关文章

  1. Selenium八大元素定位方式

    1.根据id来定位: import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.sele ...

  2. Java + Selenium + WebDriver八大元素定位方式

    UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...

  3. selenium八大元素定位方法

    1.ID定位 可以根据元素的id来定位属性,id是当前整个HTML页面中唯一的,所以可以通过id属性来唯一定位一个元素,是首选的元素定位方式.(动态ID不做考虑) # 导入webdriver和By f ...

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

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

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

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

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

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

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

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

  8. 【python+selenium的web自动化】- 8种元素定位方式详解

    ​ 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定位方式进行总结归纳. ​ 说明:以下操作统 ...

  9. Selenium 元素定位方式封装的实际应用

    一.定位方式  二.实际应用 1.项目结构 2.locator_base.py 文件 # -*- coding: utf-8 -*- from selenium.webdriver.common.by ...

  10. 1、selenium 8大元素定位方式

    元素定位方式: id name css class_name tag_name partial_link link_text : driver. find_element_by_link_text(& ...

随机推荐

  1. Git实战系列教程

    介绍 本文详细记录了Git一系列核心概念和工作中常用的操作命令,通篇以实际出发拒绝过度理论,值得典藏:). 概念 版本管理系统 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的 ...

  2. js加css实现div展示更多隐藏内容

    说明 在设计博客首页文章分类等栏目时,有时候列表内容太多往往不是一次性展示出来.此时需要添加更多功能,当点击更多标签时再展示剩余隐藏的项目. 效果 代码 <!DOCTYPE html> & ...

  3. 石子合并(区间dp+记忆化搜索)

    经典例题:石子合并 题目链接 N 堆石子排成一行,现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.计算合并最小得分. 方法一.区间dp ...

  4. 麒麟系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.8.1,并配置编译测试Demo

    前言   本篇紧接上一篇,上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试.   QtCreator ...

  5. 双层循环练习,pass_break_continue,和for循环---day06

    1.双层循环练习 2.pass_break_continue pass:在代码块中无代码可写时,可用pass占位 break:终止当前循环,只能应用在循环里 continue:跳过当前循环,从下一次开 ...

  6. 【LeetCode动态规划#17】知道秘密的人,维护多个dp数组

    知道秘密的人数 在第 1 天,有一个人发现了一个秘密. 给你一个整数 delay ,表示每个人会在发现秘密后的 delay 天之后,每天 给一个新的人 分享 秘密.同时给你一个整数 forget ,表 ...

  7. 在MATPool矩池云完成Pytorch训练MNIST数据集

    本文为矩池云入门手册的补充:Pytorch训练MNIST数据集代码运行过程. 案例代码和对应数据集,以及在矩池云上的详细操作可以在矩池云入门手册中查看,本文基于矩池云入门手册,默认用户已经完成了机器租 ...

  8. 【Azure 存储服务】Storage Account Blob 使用REST API如何获取磁盘大小(Content-Length), IOPS信息

    问题描述 1)关于使用Rest API获取非托管磁盘信息比如获取磁盘大小 2)关于使用Rest API获取非托管磁盘信息比如iops 问题答案 #1:关于使用Rest API获取非托管磁盘信息比如获取 ...

  9. [python]将多张图片合并为单个pdf文件

    前言 最近有个个人需求是要把多个图片文件合并为一个PDF文件,这样方便用PDF阅读器连续看,避免界面点一下,只会图片放大.(比如看漫画) 主要思路是先把单张图片转换成单个PDF文件,然后把PDF文件进 ...

  10. spark读取和处理zip、gzip、excel、等各种文件最全的技巧总结

    一.当后缀名为zip.gzip,spark可以自动处理和读取 1.spark非常智能,如果一批压缩的zip和gzip文件,并且里面为一堆text文件时,可以用如下方式读取或者获取读取后的schema ...