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. Springboot中如何使用日志框架logback和log4j2?

    说明 在这个简短的教程中,我们将探索 Spring Boot 中可用的主要日志记录选项:logback和log4j2 初始设置 使用 starters 时,默认使用 Logback 进行日志记录. 让 ...

  2. Oracle数据库报ORA-01078和LRM-00109错误解决方法

    创建实例后,进入sqlplus启动报错:     sqlplus / as sysdba;     SQL*Plus: Release 11.1.0.6.0 - Production on Wed A ...

  3. 新零售SaaS架构:什么是订单履约系统?

    什么是订单履约系统? 订单履约系统用来管理从接到销售订单,到把货品送到客户手中的整个业务过程.它是上游交易(如销售和客户下单环节)和下游仓储配送(如库存管理.物流)之间的桥梁,确保信息流的顺畅和操作的 ...

  4. http.Handler接口

    // 示例 // net/http package http type Handler interface{ ServeHTTP(w ResponseWriter, r *Request) } fun ...

  5. ASP.NET Core 微信支付(一)【统一下单 APIV3】

    官方参考资料 签名:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml 签名生成:https://wechatp ...

  6. 【Azure Key Vault】Key Vault能不能生成DigiCert证书?能不能自动 Rotate 证书呢?

    问题描述 因为Azure Key Vault服务上保管的证书可以轻松的与其他Azure服务集成使用,所以需要知道 Key Vault 能不能生成 DigiCert 证书?能不能自动 Rotate 证书 ...

  7. 【Azure 环境】中国区Azure B2C 是否支持手机验证码登录呢?

    问题描述 中国区Azure B2C 是否支持手机验证码登录呢? 问题回答 在没有原生 Phone sign-up and sign-in for user flows (中国区不支持,Global A ...

  8. Netty笔记(3) - 核心组件

    各组件关系示意图: Bootstrap 和 ServerBootstrap 说明: Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Ne ...

  9. VC-MFC(2) 随笔笔记

    1 //点击按钮出来对话框---------------- 2 3 1.首先添加 对话框(标识符) 4 2.在点击按钮出来第二个对话框,直接鼠标右键 新建 类 5 3.在.CPP添加新建类的 头文件 ...

  10. Codeforces(1500板刷)

    目录 写在前面 1. A. Did We Get Everything Covered?(构造.思维) 题目链接 题意 题解 代码 总结 2 F. Greetings(离散化+树状数组) 题目链接 题 ...