文档章节

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

侠客行之石头
 侠客行之石头
发布于 10/22 10:32
字数 866
阅读 10
收藏 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,自行下载浏览器驱动)

© 著作权归作者所有

共有 人打赏支持
侠客行之石头
粉丝 8
博文 182
码字总数 57032
作品 0
深圳
运维
私信 提问
Watij - 面向 Web 的自动化测试工具

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

IBMdW
2011/11/10
1K
0
selenium自动化基础知识--什么是自动化测试

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

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

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

fengzhizi715
2017/12/05
0
0
使用Selenium模拟浏览器,实现自动爬取数据

最近需要在一个网站下载一批数据。但是输入一个查询,返回三四万条结果,每次只能导出500条,而且每次还得输入下载条目的范围!这样点击下载,还不要了我的老命。于是乎想自动化这个过程。 ...

teelada
2017/02/18
0
0
Selenium基础知识

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

PereTang
2017/06/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JVisualVM监控远程jar包运行情况

1.准备一个jar文件,需要放到服务器上有运行 tuyou-user-SNAPSHOT-0.0.1.jar 2.上传至服务器,启动jar文件: nohup java -Djava.rmi.server.hostname=192.168.104.135 -Dcom.sun.management...

日落北极
18分钟前
2
0
ReentrantReadWriteLock 源码

ReentrantReadWriteLock有五个内部类,五个内部类之间也是相互关联的。内部类的关系如下图所示。 如上图所示,Sync继承自AQS、NonfairSync继承自Sync类、FairSync继承自Sync类;ReadLock实现...

狼王黄师傅
19分钟前
3
0
详解netty原理分析

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动...

小刀爱编程
26分钟前
2
0
Vue props用法小结

Vue props用法详解 组件接受的选项之一 props 是 Vue 中非常重要的一个选项。父子组件的关系可以总结为: props down, events up 父组件通过 props 向下传递数据给子组件;子组件通过 events...

peakedness丶
30分钟前
4
0
pycharm 教程(一)安装和首次使用

pycharm 教程(一)安装和首次使用 2017-12-05 09:19 by 菜鸟飞呀飞, 134207 阅读, 1 评论, 收藏, 编辑 PyCharm 是我用过的python编辑器中,比较顺手的一个。而且可以跨平台,在macos和windo...

linjin200
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部