Web自动化项目实战(4)&&xpath定位

本文详细介绍了如何使用Selenium进行Web自动化测试,包括搭建测试环境、配置ChromeDriver、浏览器控制、元素定位(特别是XPath的使用)、以及一个Web自动化实战案例,展示了如何验证淘宝商城的搜索功能。
摘要由CSDN通过智能技术生成

一、web自动化测试如何实现

二、搭建测试环境

查看谷歌版本,下载对应版本的驱动程序。(更多->设置->关于goggle)

谷歌驱动程序下载地址:http://npm.taobao.org/mirrors/chromedriver/或http://chromedriver.storage.googleapis.com/index.html

解压后把chromedriver.exe拖入到pycharm中py文件运行目录中(不知道的可以随便运行一个程序然后查看

把chromedriver.exe拖入到与python.exe同级目录下。

三、对浏览器的控制

from webdriver_helper import get_webdriver

driver =get_webdriver()
driver.get("http://baidu.com")
#input()#暂时不执行下一行

driver.get_screenshot_as_file("a_访问百度.png") # png 图片格式,只能支持png
driver.maximize_window() #最大化
driver.get_screenshot_as_file("b_最大化.png")

title=driver.title  #读取网页标题
#加()的是方法,不加()的是属性,属性就表示从里面获取数据,
print("标题",title)  #标题,是我们的title

html=driver.page_source  #读取网页html源码
print("网页源码",html)

driver.quit()  #关闭浏览器

四、元素定位

对浏览器的控制,通过WebDriver对象;对网页内容(元素)的控制,通过WebElement对象。

元素定位,实际上,就是通过WebDriver,获得WebElement的过程

selenium提供了8个定位策略:

1.基于属性的定位:id、name、tag name、class name

属性就是尖括号里的内容

<input

>

2.基于文本的定位:文本可以理解为尖括号之间的文本

<a >新闻</a>
<a  这里是属性>这里是文本</a>

局限性:只能定位链接

3.基于表达式的定位(百分百能定位到的)

xpath、css selector

xpath比css好用一些,

xpath本身是文档查询语言,天生就兼容html。

所以xpath可以很好的根据文档层级进行定位(好记)

支持灵活的语法和函数,完成定位

五、xpath

1.能看懂符号

字符含义
input选择所有input元素
*选择所有元素
/从当前中选择元素
//

从当前节点及以下的任意节点中选择元素

(不管在哪都能定位到)

.当前节点
..父节点
@(属性)根据属性进行筛选元素
[n]

返回列结果第N项目

//*[@id="su"]
从整个网页中,定位id=su 任意类型的元素

2.用对函数

函数左右示例
text获取元素内的文本(精准匹配)//a[text()="新闻"]
contains任意位置包含(模糊匹配)//a[contains(text(),"o")]
starts-with开头相同(半模糊匹配)//a[starts-with(text(),"地图")]
last()列表最后一个

//div[@id="s-top-left"]/a[last()]

//*[@id="s-top-left"]/a[1]

//a[text()='新闻']

六、对元素的控制

selenium通过面向对象的方式,完成对元素的控制。

属性:获取数据

方法:改变数据

常用的属性和方法(不是全部):(方法即操作)

属性内容例子
id唯一标记36f-6a18
tag_name标签名input
location元素坐标{’x‘:298,'y':188}
size元素大小{'height':44,'width':548}
rect元素范围{'height':44,'weight':548,'x':298,'y':188}
parentwebDriver实例
screenshot_as_base64()截图的base64内容
screenshot_as_png()截图的二进制内容
get_attribute(name)获取元素的HTML属性
value_of_css_property获取CSS属性
click()点击
clear()清空内容
send_keys(content)输入内容

示例:在百度搜索框输入“112233”并搜索

from selenium.webdriver.common.by import By
from webdriver_helper import get_webdriver

driver=get_webdriver()
driver.get("http://baidu.com")  #控制浏览器访问百度

el_1=driver.find_element(By.XPATH,'//*[@id="kw"]') #定位输入框
el_1.send_keys("112233") #输入内容
#
#找搜索按钮
el_2=driver.find_element(By.XPATH,'//*[@id="su"]')  #搜索按钮
el_2.click()  #点击

input()
driver.quit()

七、Web自动化实战

测试需求:验证商城的搜索功能

测试用例:

  • 用例名称:搜索手机
  • 用例步骤:
  1.   打开被测页面
  2. 输入搜索词:手机
  3. 点击搜索按钮
  4. 断言:每一个搜索结果都包含“手机”二字
from selenium.webdriver.common.by import By
from webdriver_helper import get_webdriver

driver=get_webdriver()
driver.get("https://www.taobao.com/")  #控制浏览器访问百度

el_1=driver.find_element(By.XPATH,'//*[@id="q"]') #定位输入框,右键copy XPTH
el_1.send_keys("手机") #输入内容
#
#找搜索按钮
el_2=driver.find_element(By.XPATH,'//*[@id="J_TSearchForm"]/div[1]/button')  #搜索按钮
el_2.click()  #点击

input()
driver.quit()

其实成功了(但要先登录)

获取搜索结果:

#获取搜索结果

el_list=driver.find_elements(By.XPATH,'/div/div[2]/div[1]/div[1]/div[2]/div[3]/div/div/a/div/div[1]/div[2]/div/span')#花一点时间手写xpath
#//*[@id="root"]/div/div[2]/div[1]/div[1]/div[2]/div[3]/div/div[1]/a/div/div[1]/div[2]/div/span
#//*[@id="root"]/div/div[2]/div[1]/div[1]/div[2]/div[3]/div/div[2]/a/div/div[1]/div[2]/div/span
#观察于是在不同的地方开始修改。

#assert len(el_list)==6

for el in el_list:# 从列表中取出每个数据然后从中找到手机那一列
    assert "手机" in el.text #断言,元素的文本中包含”手机“

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值