自动化测试(二)selenium八大获取元素方法及对象操作

上一篇主要讲解了自动化测试的环境。最后用 IDE 生成了一个样例。这节课将详细的介绍 webdriver 的常用的API🤦‍♀️
selenium+python环境没有配置好的可以先看我上两篇配置环境噢。

webdriver API

脚本实例

一个简单自动化脚本的构成:
# coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver =webdriver.Chrome()
driver.get('http://www.baidu.com')
time.sleep(3)
driver.find_element(By.ID,'kw').send_keys('软件测试')
time.sleep(3)
driver.find_element(By.ID,'su').click()
time.sleep(3)
driver.quit()
脚本解析:
coding = utf-8
防止乱码,在编辑器里面可以不用加,因为编辑器默认的就是 UTF-8 模式。
from selenium import webdriver
导入 webdriver 工具包,这样就可以使用里面的 API
driver =webdriver.Chrome()
获得被控制浏览器的驱动,这里是获得Chrome 的,当然还可以获得其他 浏览器,不过要想使这一段代码有效,必须安装相应的浏览器驱动。
driver.get('http://www.baidu.com')

打开百度这个网址。

driver.find_element(By.ID,'kw').send_keys('软件测试')

根据id寻找kw这个元素,在百度里面,这个kw的元素是搜索框,然后send_keys是输入指令,输入“软件测试”

driver.find_element(By.ID,'su').click()

这一段是根据id找到su这个按钮,click代表点击

driver.quit()

关闭浏览器

总结上面代码的逻辑是,在百度中搜索“软件测试”,并点击搜索按钮

driver.close()

 上面一行代码也能够关闭窗口,和quit的区别是:

close 方法关闭当前的浏览器窗口, quit 方法不仅关闭窗口,还会彻底的退出 webdriver ,释放与 driverserver之间的连接。所以简单来说 quit 是更加彻底的 close quit 会更好的释放资源。

元素的定位

对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门牌找到这个人。
那么一个对象也有类似的属性,我们可以通过这些属性找到这对象。
注意:不管用那种方式,必须保证页面上该属性的唯一性
webdriver 提供了一系列的对象定位方法,常用的有以下几种:
id
name
class name
link text
partial link text
tag name
xpath
css selector
我们可以看到,一个百度的输入框,可以用这么多种方式去定位。
<input type="text" class="s_ipt" name="wd" id="kw" 
maxlength="100" autocomplete="off">

1. 通过id定位:

        id是页面元素的属性,我们最常用元素定位方式,但是不是所有的元素都有 id 的。如果一个元素有 id 属 性,那么一般在整个页面是唯一的。所以我们一般可以用id 来唯一的定位到这个元素。
通过前端工具,例如 Chrome 浏览器的 F12 ,找到了百度输入框的属性信息,如下:
<input type="text" class="s_ipt" name="wd" id="kw" 
maxlength="100" autocomplete="off">
属性 id=”kw” ,通过下面这行代码就能定位到输入框。
driver.find_element(By.ID,'kw').send_keys('软件测试')

2. 通过name方式定位

如果这个元素有 name ,并且元素的 name 命名在整个页面是唯一的,那么我们可以用 name 来定位这个元素。
用上面百度输入框的例子,其中元素的属性 name=”wd”
通过driver.find_element(By.NAME,'wd')函数同样也可以定位到百度输入框
driver.find_element(By.NAME,'wd').send_keys('软件测试')

3. 通过tag name(标签名)定位

从上面的百度输入框的属性信息中,我们看到,不单单只有 id name 两个属性, 比如 class tag

name(标签名) input 就是一个标签的名字,而class="s_ipt"是类名。

在这里要注意的是,不是所有的元素用 tag name或者 class name来定位元素,首先要保证该元素的这两种属性在页面上是唯一的,才能够精准定位。

driver.find_element(By.TAG_NAME,'input').send_keys('软件测试')

注意:上面这个可能执行不成功,因为标签名可能不唯一🤦‍♀️

4. 通过class name (类名)方式定位

driver.find_element(By.CLASS_NAME,'s_ipt').send_keys('软件测试')

5. 通过CSS 方式定位

CSS(Cascading Style Sheets) 是一种语言,它被用来描述 HTML XML 文档的表现。
CSS 使用选择器来为页面元素绑定属性。这些选择器可以被 selenium 用作另外的定位策略。

CSS 的比较灵活可以选择控件的任意属性,上面的例子中:driver.find_element(By.CSS_SELECTOR,'#kw')选择取百度输入框的id 属性来定义

CSS 的获取可以用 chrome F12 开发者模式中 Element- 右键 -copy-copy selector 来获取
driver.find_element(By.CSS_SELECTOR,'#kw').send_keys('软件测试')

6. 通过xpath方式定位

什么是XPathhttp://www.w3.org/TR/xpath/

XPath 基础教程: http://www.w3schools.com/xpath/default.asp
XPath 是一种在 XML 文档中定位元素的语言。因为 HTML 可以看做 XML 的一种实现,所以 selenium 用 户可是使用这种强大语言在web 应用中定位元素。
XPath 扩展了上面 id name 定位方式,提供了很多种可能性。
XPATH 的获取可以用 chrome F12 开发者模式中 Element- 右键 -copy-copy xpath 来获取
driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys('软件测试')

7. link text定位

有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过链接内容,也就是 link text 来定位。
需要注意的是链接内容必须这个页面唯一,否则会报错。
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element(By.LINK_TEXT,"hao123").click()
browser.quit()

8. Partial link text 定位

通过部分链接定位,这个有时候也会用到,拿上面的例子,我可以只用链接的一部分文字进行匹配:
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element(By.PARTIAL_LINK_TEXT,"hao123").click()
browser.quit()

操作测试对象

前面讲到了不少知识都是定位元素,定位只是第一步,定位之后需要对这个元素进行操作。是鼠标点击还是键盘输入,或者清除元素的内容,或者提交表单等。这个取决于定位元素需要进行的下一步操作。
webdriver 中比较常用的操作对象的方法有下面几个:

1. click 点击对象
2. send_keys 在对象上模拟按键输入
3. clear 清除对象输入的文本内容
4. submit 提交
5. text 用于获取元素的文本信息

 鼠标点击与键盘输入

#coding=utf-8
from selenium import webdriver
import time

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
driver.find_element(By.ID,"kw").send_keys("test")
time.sleep(2)
driver.find_element(By.ID,"kw").clear()
driver.find_element(By.ID,"kw").send_keys("selenium")
time.sleep(2)
#通过submit() 来操作
driver.find_element(By.ID,"su").submit()
time.sleep(3)
driver.quit()
click() 用于点击一个按钮。
clear() 用于清除输入框的内容,比如百度输入框里默认有个 请输入关键字 的信息,再比如我们的登录框一般默认会有“ 账号 ”“ 密码 这样的默认信息。 clear 可以帮助我们清除这些信息。

submit 提交表单

打开百度搜索页面,按钮 百度一下 元素的类型 type=“submit” ,所以把 百度一下 的操作从 click 换成 submit 可以达到相同的效果:
driver.find_element(By.ID,"su").submit()

text 获取元素文本

text 用于获取元素的文本信息
#coding=utf-8
from selenium import webdriver
import time

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
#id = cp 元素的文本信息
data=driver.find_element(By.ID,"bottom_layer").text
print(data) #打印信息
time.sleep(3)
driver.quit()
输出:
©2018 Baidu 使用百度前必读 意见反馈 京ICP证030173号

本节就到这里啦,你们的支持就是我前进的动力,希望大家多多支持噢🤦‍♀️🤦‍♂️🤷‍♀️🤷‍♂️🎈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马可波罗.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值