selenium和webdriver自动化测试-helloworld

什么是selenium

selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。
Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。


这里要说一下比较重要的PhantomJS,PhantomJS是一个而基于WebKit的服务端JavaScript API,支持Web而不需要浏览器支持,其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试

 

一、搭建环境

搭建python环境

以下实验都是在python2.7环境下运行的

(1)安装selenium

在python安装目录的Scripts下(比如我的是:D:\devtools\Python37\Scripts)运行命令行,并输入以下命令安装:

pip install -U selenium

selenium和webdriver自动化测试-helloworld_第1张图片

搭建java环境

下载selenium的服务端(下载地址:http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.0.jar)

解压,然后在selenium-server-standalone-2.53.0.jar的目录下使用命令java -jar selenium-server-standalone-2.53.0.jar 启动。

在本文中还用不到服务端,所以可以暂时不启动。

selenium和webdriver自动化测试-helloworld_第2张图片

(2)安装chrome driver

chrome driver下载地址:http://chromedriver.storage.googleapis.com/index.html?path=2.7/

解压后,将chromedriver.exe文件放在chrome的安装目录下的Application文件夹下(比如我的是:C:\Program Files (x86)\Google\Chrome\Application)

然后设置path环境变量,把chrome的安装目录(比如我的是:C:\Program Files (x86)\Google\Chrome\Application)添加到path中。

然后使用下列程序来测试一下:

# coding=utf-8
 
from selenium import webdriver
 
driver = webdriver.Chrome()
 
driver.get('http://www.baidu.com')
 
print driver.title
 
driver.quit()

可能出现的错误:

1. chromedriver.exe文件被杀毒软件删掉,程序运行后报错:找不到路径。

解决方法:在杀毒软件中为chromedriver.exe添加信任

2. 提示Chrome version的问题,版本过旧

解决方法:给Chome升级,右上角的三点->帮助->关于Google Chrome->版本更新

 二、使用程序自动在百度中输入搜索词进行搜索

# coding=utf-8
 
from selenium import webdriver
 
import time
 
# 打开chrome浏览器
driver = webdriver.Chrome()
 
# 输入网址,打开www.baidu.com
driver.get('http://www.baidu.com')
 
# 找到id=kw的输入框,输入selenium
driver.find_element_by_id("kw").send_keys("selenium")
 
# 找到id=su的按钮,进行点击
driver.find_element_by_id("su").click()
 
# 睡眠5秒
time.sleep(5)
 
# 关闭浏览器
driver.quit()

 三、使用程序自动登录新浪微博

# coding=utf-8
 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time,os
 
# 打开chrome浏览器
driver = webdriver.Chrome()
 
# 输入网址,打开www.baidu.com
driver.get('http://weibo.com')
 
driver.maximize_window()
driver.implicitly_wait(20)
 
# 有的输入框可能有默认的一些提示值,先将框中的值删掉
# driver.find_element_by_id("loginname").clear()
# 找到id=loginname的输入框,输入用户名
driver.find_element_by_name("username").send_keys("18606146174")
 
# Keys.TAB相当于模拟处于账号框时使用TAB键然后移动到下面的密码框
driver.find_element_by_name("username").send_keys(Keys.TAB)
time.sleep(2)
 
# 输入密码
driver.find_element_by_name("password").send_keys("a123456")
# 定位到密码框,然后敲回车(enter)
driver.find_element_by_name("password").send_keys(Keys.ENTER)
 
# 睡眠5秒
time.sleep(5)
 
# 关闭浏览器
driver.quit()

在不添加

driver.maximize_window()
driver.implicitly_wait(20)

这两行代码时,会出现下面这个错误

selenium和webdriver自动化测试-helloworld_第3张图片

 可能是由于页面没有加载完整造成的,通过放大浏览器,使用智能等待,然后再去找相应id或name的元素。

四、其他的用法

(1)webdriver提供了一些列的对象定位方法,常用的有:id,name,class name,link text, partial link text,tag name, xpath, css selector

拿百度的输入框作为例子:

# coding=utf-8
 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time,os
 
# 打开chrome浏览器
driver = webdriver.Chrome()
 
# 输入网址,打开www.baidu.com
driver.get('http://www.baidu.com')
 
# 通过id方式定位
driver.find_element_by_id("kw").send_keys("selenium")
# 通过name方式定位
driver.find_element_by_name("wd").send_keys("selenium")
# 通过tag name方式定位
driver.find_element_by_tag_name("input").send_keys("selenium")
# 通过class name方式定位
driver.find_element_by_class_name("s_ipt").send_keys("selenium")
# 通过css方式定位
driver.find_element_by_css_selector("#kw").send_keys("selenium")
# 通过xpath方式定位
driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
 
driver.find_element_by_id("su").click()
 
time.sleep(3)
 
# 关闭浏览器
driver.quit()

2)智能等待

通过添加implicitly_wait()方法就可以方便的实现智能等待;

implicitly_wait(30)的用法应该比time.sleep()更智能,后者智能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

import time
driver.implicitly_wait(30)
(3)打印title
print driver.title  # 把页面titile打印出来

 

(4)浏览器最大化

driver.maximize_window()  #将浏览器最大化显示


(5)设置浏览器宽、高

driver.set_window_size(480,800)  #设置浏览器宽480、高800显示

 

(6)操作测试对象

一般webdriver中比较常用的操作对象的方法有下面几个

click 点击对象

send_keys 在对象上模拟按键输入

clear 清除对象的内容,如果可以的话

submit 提交表单

 

(7)鼠标事件

ActionChains类

context_click() 右击

double_click() 双击

drag_and_drop() 拖动

 

你可能感兴趣的:(08-DEVOPS-TEST)