目录

  • 一、操控浏览器
  • 1. 窗口操作基本用法
  • 二、元素定位的基本用法
  • 1. Html 网页元素构建基本知识
  • 2. selenium 元素定位的基本用法
  • 2.1 8 种基本定位用法
  • 2.1.1 基础用法
  • 2.1.2 Xpath 用法
  • 3 获取网页内容和输入内容


一、操控浏览器

作为一个主流的WEB 自动化测试框架,操控浏览器是必不可少的,我列举了以下比较常用的

1. 窗口操作基本用法

# 导入驱动类
from selenium import webdriver

browser = webdriver.Chrome(chrome_options=option)
browser.get("http://www.baidu.com")

# 获取浏览器当前的url
print(browser.current_url)

ele = browser.find_element_by_id("kw")  # 定位百度搜索框
ele.click()   # 点击搜索框
ele.send_keys("selenium")  # 在搜索框输入内容

browser.find_element_by_id("su").click()

# 后退
browser.back()

# 前进
browser.forward()

# 刷新
browser.refresh()

# 设置窗口大小
browser.set_window_size(500, 600)

# 浏览器最大化
browser.maximize_window()

# 获取浏览器当前的标题
print(browser.title)

# 获取浏览器窗口大小
print(browser.get_window_size())

# 获取浏览器窗口大小及起始坐标
print(browser.get_window_rect())

# 句柄,获取浏览器窗口的id
print(browser.current_window_handle)

# 句柄,获取所有浏览器窗口的id
print(browser.window_handles)

# 获取页面源码
print(browser.page_source)

# 关闭浏览器标签页
browser.close()

# 关闭浏览器 和 执行脚本的浏览器驱动
browser.quit()

二、元素定位的基本用法

1. Html 网页元素构建基本知识

这一块可以看一下菜鸟教程的html的教程

2. selenium 元素定位的基本用法

自动化脚本其实就是模拟用户点击网页元素来实现自动化测试的,所以元素定位的准确性很大程度上就决定了脚本的维护成本和稳定性

2.1 8 种基本定位用法

通过Chrome 开发者工具(F12)在Elements 通过锁定网页元素可以定位到在html 到位置。

selenium怎样监控页面渲染完成 selenium操作浏览器_元素定位

2.1.1 基础用法
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")

# 通过id定位
browser.find_element_by_id("kw")

# 当id是动态id的时候,不能用id来定位;动态id一般是带数字、不规则的id

# 通过name定位
browser.find_element_by_name('wd')

# 通过class_name
browser.find_element_by_class_name('s_ipt')  # 有多个class_name的时候不能有空格

# 通过超链接文本定位
browser.find_element_by_link_text("新闻")
browser.find_element_by_partial_link_text("新")  # 通过文本的一部分定位

# 通过tag_name
browser.find_element_by_tag_name("input").click() # 这个input不是唯一到所以必然会报异常
2.1.2 Xpath 用法

除了上面到基本用法还有Xpath 和CSS 定位到方法
两种到比较
css 更快,更加简洁
xpath 功能比较强大

Xpath 定义: 即为XML路径语言(XML Path Language),它是用来确定文档某部分位置的语言,属于标记性的语言;

绝对定位:就是全路径定位,如:百度输入框的绝对定位: /html[1]/body[1]/div[2]/div[2]/div[5]/div[1]/div[1]/form[1]/span[1]/input[1]

相对定位:'//'可以省略前面的定位路径,如:百度输入框的相对定位://input[@id='kw']
优点:
1.相对定位的兼容性更好;
2.可以节省表达式长度;
3.能通过组合的形式来定位;

组合用法:
*通配符
contains(text(),'value')  # 包含

//相对定位[@tagname='' and tagname2='']/子元素tag[@]

eg: 定位百度一下的按钮
//input[@id='su']
//input[@value='百度一下'] 
//input[@class='btn self-btn bg s_btn'] 
//input[@type='submit']


轴定位用法://轴关系::元素类型[谓语条件]
总共有八个轴关键字,parent父辈,child孩子,ancestor祖先,descendant后裔,following,following-sibling兄弟姐妹,preceding,preceding-sibling。
  
具体含义如下:
parent::div 上层父节点,你那叫div的亲生爸爸,最多有一个;
child::div 下层所有子节点,你的所有亲儿子中叫div的;
ancestor::div 上面所有直系节点,是你亲生爸爸或者你亲爹或者你亲爹的爸爸中叫div的;
descendant::div 你下面所有节点,你的后代中叫div的,不包括你弟弟的后代;
following::div 自你以下页面中所有节点叫div的;
following-sibling::div 同层下节点,你所有的亲弟弟中叫div的;
preceding::div 同层上节点,你所有的亲哥哥以及他们的后代中叫div的;
preceding-sibling::div 同层上节点,你所有的亲哥哥中叫div的;

如下面我通过百度一下用轴定位的方法去定位语言输入麦

selenium怎样监控页面渲染完成 selenium操作浏览器_元素定位_02


我们用ancestor 来定位,Xpath 表达式如下

//input[@type='submit']//ancestor::form[@id='form']//span[@class='ipt_rec']

3 获取网页内容和输入内容

在自动化脚本中,我们通常都需要去获取网页内都文本、超链接、标签属性等等,供我们做断言等后续操作。也少不来需要输入内容和上传文件

在这里插入代码片