文档章节

知识点043-selenium自动化测试网页工具的使用

侠客行之石头
 侠客行之石头
发布于 2018/10/22 10:32
字数 866
阅读 15
收藏 1

【摘要】

Selenium是一个主要用于Web应用自动化测试的工具集合。但其作用不仅仅局限于测试领域,还可以用于浏览器行为模拟以及屏幕抓取等,在行业内有着广泛的应用。Selenium支持主流的浏览器,包括Chrome、Firefox、IE、Safari 以及Opera等。本文将通过Selenium对Chrome浏览器进行操纵,以模拟一个简单的Web应用自动化测试流程,python版本为2.7.14,selenium版本为3.14.0。

【正文】

  • 操作过程

安装selenium,可以通过pip命令简单操作即可

pip install selenium

下载对应chrome版本的chrome driver(本文将其放置在与python代码文件的上层目录)

导入selenium所要用到的模块

import os

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

 

获取chrome driver位置

dir = os.path.join(os.path.dirname(__file__), os.path.pardir)

chrome_driver_path = dir + '\chromedriver.exe'

启动一个chrome 会话

driver = webdriver.Chrome(chrome_driver_path)

driver.implicitly_wait(30)

driver.maximize_window()

 

访问URL(本文是访问本地web应用的地址)

driver.get('http://127.0.0.1:8000/task_check/')

定位返回页面中的元素,并进行对元素进行操作。本文将通过定位IP输入框,输入测试值以对结果进行筛选,并检查返回结果。

 

selenium提供了多种find_ element_ by/find_ elements_ by方法用于定位页面元素,常用的定位方法有

方法

用途

find_elements_by_id()

通过元素的ID属性值来定位元素

find_elements_by_name()

通过元素的name属性值来定位元素

find_elements_by_class_name()

通过元素的class属性值来定位元素

find_elements_by_xpath()

通过XPath来定位元素

find_elements_by_css_selector()

通过CSS选择器来定位元素

find_elements_by_link_text()

通过元素标签对之间的文本信息来定位元素

 

常用的对于元素操作方法有

方法

用途

clear()

清除文本框或文本域中的内容

click()

单击元素

send_ keys()

输入文本

submit()

is_ displayed()

提交表单

判断元素是否可见

is_ enabled()

判断元素是否可用

is_ selected()

判断元素是否被选中

get_ attribute()

获取元素属性值

获取IP输入框,并清空其文本内容

search_field = driver.find_element_by_id('ip')

search_field.clear()

自定义一个延时等待函数,以实现等待页面完全加载完成后再进行下一步操作,避免获取元素时目标元素尚未加载的情况。

def wait_for_ajax(driver):

    wait = WebDriverWait(driver, 15)

    try:

        wait.until(lambda driver: driver.execute_script('return jQuery.active') == 0)

        wait.until(lambda driver: driver.execute_script('return document.readyState') == 'complete')

    except Exception as e:

        print e.message

在IP输入框输入值,并点击搜索

wait_for_ajax(driver)

search_field.send_keys('192.168.163.3')

wait_for_ajax(driver)

driver.find_element_by_xpath('//button[@onclick="get_log_list()"]').click()

获取返回结果,本文获取表格的部分列信息

wait_for_ajax(driver)

results1 = driver.find_elements_by_xpath("//tr/td[2]")

results2 = driver.find_elements_by_xpath("//tr/td[4]")

results3 = driver.find_elements_by_xpath("//tr/td[5]")

# driver.find_elements 的结果只能迭代一次,对于一些不可见的元素也会包含,但是没有text值

text1 = [i.text for i in results1 if i.text]

text2 = [i.text for i in results2 if i.text]

text3 = [i.text for i in results3 if i.text]

 

for j in range(len(text1)):

    print text1[j]+"; "+text2[j]+"; "+text3[j]

 

关闭浏览器

driver.quit()

 

此文章是借鉴别人的,大概流程是如此(需要自己安装pip,python,自行下载浏览器驱动)

© 著作权归作者所有

共有 人打赏支持
侠客行之石头
粉丝 9
博文 182
码字总数 57032
作品 0
深圳
运维
私信 提问
selenium自动化基础知识--什么是自动化测试

selenium自动化基础知识 什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测...

颜丽
2017/10/30
0
0
利用Selenium模拟页面滚动,结合PicCrawler抓取网页上的图片

在做图片爬虫时,经常会遇到一些网站需要鼠标不断滚动网页才会继续响应,这对传统的HttpClient是一件很困难的事情,至少我不知道如何处理。幸好,我找到了Selenium。 Selenium Selenium 是一...

fengzhizi715
2017/12/05
0
0
Watij - 面向 Web 的自动化测试工具

简介: 随着应用程序渐渐脱离独立的宿主模型并进入到云中,可靠性和可预测性的测试变得更加重要。在云环境中,有许多 因素是我们无法控制的,因此编写健壮的、经过测试的代码比以往更加迫切。...

IBMdW
2011/11/10
1K
0
Selenium基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-selenium/ 什么是Selenium Selenium是一个自动化测试工具 是一组不同的工具 其支持在多个浏览器平台上执行测试 为什么需要S...

PereTang
2017/06/06
0
0
做自动化测试之前需要了解的

首先理清自动化测试的概念,什么是自动化测试? 广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做是自动化,包括性能测试工具(Loadrunner、Jmeter),...

itzhongxin
2017/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
26分钟前
1
0
eclipse中项目svn转gitLab全过程

在工作中,我们可能会遇到项目从svn迁移到gitLab;此过程我们需要变化版本管理工具,上传代码。本篇博客记录了使用spring tool suit(sts/eclipse)进行项目迁移的全过程。 步骤: (1)端口之...

em_aaron
今天
2
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
1
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0
看了一下Maven的内容

了解了Maven其实是一个跨IDE的标准构建工具,能推广的原因估计是借了仓库的便利。 另一个作用是可以通过Maven的功能在社区版的IDEA去创建Web项目,下次实践看看

max佩恩
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部