使用selenium和webdriver进行自动化测试

一、搭建环境

本文默认已经有python环境,并且能看懂python。(不会的可以百度,Python环境还是很好搭建的)

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

(1)安装selenium

在python安装目录的Scripts下(比如我的是:D:\program files\python2.7.0\Scripts)运行命令行,并输入以下命令安装:

pip install -U selenium


搭建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 启动。

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

(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中。

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

 
  1. # coding=utf-8

  2.  
  3. from selenium import webdriver

  4.  
  5. driver = webdriver.Chrome()

  6.  
  7. driver.get('http://www.baidu.com')

  8.  
  9. print driver.title

  10.  
  11. driver.quit()


可能出现的错误:

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

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

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

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

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

 
  1. # coding=utf-8

  2.  
  3. from selenium import webdriver

  4.  
  5. import time

  6.  
  7. # 打开chrome浏览器

  8. driver = webdriver.Chrome()

  9.  
  10. # 输入网址,打开www.baidu.com

  11. driver.get('http://www.baidu.com')

  12.  
  13. # 找到id=kw的输入框,输入selenium

  14. driver.find_element_by_id("kw").send_keys("selenium")

  15.  
  16. # 找到id=su的按钮,进行点击

  17. driver.find_element_by_id("su").click()

  18.  
  19. # 睡眠5秒

  20. time.sleep(5)

  21.  
  22. # 关闭浏览器

  23. driver.quit()


 

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

 
  1. # coding=utf-8

  2.  
  3. from selenium import webdriver

  4. from selenium.webdriver.common.keys import Keys

  5. import time,os

  6.  
  7. # 打开chrome浏览器

  8. driver = webdriver.Chrome()

  9.  
  10. # 输入网址,打开www.baidu.com

  11. driver.get('http://weibo.com')

  12.  
  13. driver.maximize_window()

  14. driver.implicitly_wait(20)

  15.  
  16. # 有的输入框可能有默认的一些提示值,先将框中的值删掉

  17. # driver.find_element_by_id("loginname").clear()

  18. # 找到id=loginname的输入框,输入用户名

  19. driver.find_element_by_name("username").send_keys("18606146174")

  20.  
  21. # Keys.TAB相当于模拟处于账号框时使用TAB键然后移动到下面的密码框

  22. driver.find_element_by_name("username").send_keys(Keys.TAB)

  23. time.sleep(2)

  24.  
  25. # 输入密码

  26. driver.find_element_by_name("password").send_keys("a123456")

  27. # 定位到密码框,然后敲回车(enter)

  28. driver.find_element_by_name("password").send_keys(Keys.ENTER)

  29.  
  30. # 睡眠5秒

  31. time.sleep(5)

  32.  
  33. # 关闭浏览器

  34. driver.quit()


 

在不添加

 
  1. driver.maximize_window()

  2. driver.implicitly_wait(20)

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

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

四、其他的用法

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

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

 
  1. # coding=utf-8

  2.  
  3. from selenium import webdriver

  4. from selenium.webdriver.common.keys import Keys

  5. import time,os

  6.  
  7. # 打开chrome浏览器

  8. driver = webdriver.Chrome()

  9.  
  10. # 输入网址,打开www.baidu.com

  11. driver.get('http://www.baidu.com')

  12.  
  13. # 通过id方式定位

  14. driver.find_element_by_id("kw").send_keys("selenium")

  15. # 通过name方式定位

  16. driver.find_element_by_name("wd").send_keys("selenium")

  17. # 通过tag name方式定位

  18. driver.find_element_by_tag_name("input").send_keys("selenium")

  19. # 通过class name方式定位

  20. driver.find_element_by_class_name("s_ipt").send_keys("selenium")

  21. # 通过css方式定位

  22. driver.find_element_by_css_selector("#kw").send_keys("selenium")

  23. # 通过xpath方式定位

  24. driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

  25.  
  26. driver.find_element_by_id("su").click()

  27.  
  28. time.sleep(3)

  29.  
  30. # 关闭浏览器

  31. driver.quit()


 

(2)智能等待

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

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

 
  1. import time

  2. 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() 拖动

--------------------- 本文来自 小拳头 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xiaoquantouer/article/details/52574129?utm_source=copy

猜你喜欢

转载自blog.csdn.net/lelemom/article/details/82976252
今日推荐