Selenium 八大元素定位方式

UI自动化测本质无非就是: 定位元素 -> 操做元素 -> 模拟页面动做 -> 断言结果 -> 生成测试报告。
因此咱们作UI自动化的第一步就是定位元素,若是连元素都定位不到就更没必要说接下来的操做。
本篇随笔即是关于Selenium八大元素定位方式,让你成功定位元素。
php

  1. find_element_by_idcss

    # -*- coding:utf-8 -*-
    # 做者:IT小学生蔡坨坨
    # 时间:2020/12/13 13:42
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()  # 实例化
    
    # demo01:
    # 打开云商网站
    driver.get("http://101.133.169.100/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_namehtml

    # -*- coding:utf-8 -*-
    # 做者:IT小学生蔡坨坨
    # 时间:2020/12/13 13:53
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.get('http://101.133.169.100/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_namepython

    # -*- coding:utf-8 -*-
    # 做者:IT小学生蔡坨坨
    # 时间:2020/12/15 16:26
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    
    # 打开云商网站
    driver.get("http://101.133.169.100/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_textweb

    # -*- coding:utf-8 -*-
    # 做者:IT小学生蔡坨坨
    # 时间:2020/12/15 17:44
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    
    driver.get("http://101.133.169.100/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://101.133.169.100/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://101.133.169.100/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:
# 输入用户名:15059224492
driver.find_element_by_xpath("//div[@class='binput']/input[@name='username']").send_keys("15059224492")
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)
# 输入手机:15059224499
driver.find_element_by_xpath("//input[@name='mobile']").send_keys("15059224499")
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://101.133.169.100/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)

# demo16;
# 点击第一个搜索结果进入编测编学官网
driver.find_element_by_css_selector("div[class='result c-container new-pmd'][id='1']>h3>a").click()
time.sleep(3)
# 列出全部句柄
handles = driver.window_handles
print(handles)
# 打印当前句柄
print(driver.current_window_handle)
# 第一个窗口的索引是0
driver.switch_to.window(handles[1])
time.sleep(2)

# demo17:
# 点击测试论坛
driver.find_element_by_css_selector("div[class='nexnav']>ul>:nth-child(4)>a").click()
time.sleep(3)

# demo18:
# 点击 编测编学软件实战训练班学习大纲
driver.find_element_by_css_selector("#portal_block_48_content>h5>a").click()
time.sleep(5)

# 关闭当前窗口
driver.close()
time.sleep(3)

# 关闭全部窗口
driver.quit()
  1. find_elements_by_tag_name网站

    tag = driver.find_elements_by_tag_name("input")
相关文章
相关标签/搜索