软件测试知识整理 —-Selenium篇(一)

一、自动化

自动化测试概念:自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

自动化测试包括UI自动化,接口自动化,单元测试自动化。

二、Selenium

1.概念:

Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。

早期的selenium RC已经被现在的webDriver所替代,可以简单的理解为selenium1.0+webdriver构成
现在的Selenium2.0。现在我们说起selenium,一般指的是Selenium2.0。它有由Selenium IDE,
Webdriver,Selenium Grid组成。

Selenium IDE:
Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且
能回放,编辑和调试测试脚本。调试过程中可以逐步进行或调整执行的速度,并且可以在底部浏览日志
出错信息。
录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人
员操作。
Webdriver:
Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出
JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定
语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验
证。

2.工作原理

3.Selenium + Java环境搭建

搭建步骤

1.下载Chrome驱动与Chrome浏览器(版本注意适配)
2.创建java项目(Maven项目)
3.引入Selenium项目依赖
4.编写自动化代码
:此处不说明搭建流程,csdn上有很多这里只演示成功结果

当环境搭建好以后写如下代码

public class Main {
    public static void main(String[] args) {
        //创建一个options对象,用来给请求设置一些参数
        ChromeOptions options = new ChromeOptions();
        //允许所有的请求
        options.addArguments("--remote-allow-origins=*");
        //创建一个驱动对象
        WebDriver webDriver = new ChromeDriver(options);
        //让驱动对象打开百度网页
        webDriver.get("https://www.baidu.com");
        //关闭打开的网页
        webDriver.quit();

    }
}

当代码成功运行且弹出以下窗口并关闭就算成功,当然注释掉最后一行代码页面就不会被关闭

三、webdriver API

元素定位

对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门牌找到这个人。

那么一个对象也有类似的属性,我们可以通过这些属性找到这对象。

注意:不管用那种方式,必须保证页面上该属性的唯一性

webdriver 提供了一系列的对象定位方法,常用的有以下几种

  • id
  • name
  • class name
  • link text
  • partial link text
  • tag name
  • xpath
  • css selector

我们可以看到,一个百度的输入框,可以用这么多种方式去定位。(以下属于网络代码,仅供参考说明,我没有测试过)

<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd"
autocomplete="off">
#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium") 不能成功,因为
input太多了不唯一。
#通过class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xphan 方式定位
browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
############################################
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()

1.css定位元素

1)id选择器

#kw就是一个id选择器
#kw是百度网页搜索框id,通过这个id选择器我们就可以定位到搜索框
同理#su就是"百度一下"按钮的id

2)类选择器

.(类名)就构成一个类选择器如.s_ipt就是一个类选择器,s_ipt就是类名

3)标签选择器

形如div,span,a,这样的就是标签选择器,在html中他们代表一个标签,我们可以直接通过标签选择器定位到该元素

4)后代选择器

将父标签和子标签以空格的形式分隔开,共同构成后代选择器
形如(div span p)这样就是一个后代选择器,这种选择方式可以向后叠加,直到定位到自己写要的元素

2.XPath定位

什么是XPath:http://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来获取

注:css定位元素也可右键

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇