Selenium +Python自动化测试

本文详细介绍了Selenium结合Python进行自动化测试的各个方面,包括元素定位(id、name、link text等)、操作测试对象(点击、输入、清除等)、浏览器操作、键盘和鼠标事件,以及处理弹框和上传文件等,提供了丰富的示例代码。
摘要由CSDN通过智能技术生成


selenium相关介绍:

selenium工具集:selenium 1.0 、selenium 2.0
selenium 1.0包括:selenium IDE(自动化脚本录制工具)、selenium Grid(分布式测试)、selenium RC(selenium Sever、Client Libraries)
selenium 2.0在selenium 1.0的基础上加了一个webdriver(绕过了JavaScript的环境沙箱问题);
selenium工具:自动化测试工具、UI测试工具
selenium的特点:
轻量级,免费开源;
支持多语言,Java Python C#ruby JavaScript
支持多浏览器:Chrome Firefox edge Opera Safari lE
支持分布式: selenium Grid

WebDriver的原理:
在这里插入图片描述
WebDriver就相当于司机,乘客就相当于脚本,司机会驱动汽车到达乘客想要去的地方,即WebDriver会驱动浏览器运行脚本。

一、简单脚本的构成

# coding = utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
browser.find_element_by_id("su").click()
browser.quit()
  1. 在脚本头部导入需要的包;
  2. 获取浏览器的驱动;
  3. 使用浏览器对需要测试的web系统进行操作;
  4. 测试完了,关闭浏览器。

二、元素的定位

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

#退出并关闭窗口的每一个相关的驱动程序。
browser.quit()
#关闭当前窗口
browser.close()

id定位

定位页面元素的原则:元素的属性全局(全页面)唯一;
id全局唯一

以百度搜索框为例:

from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
#用id来定位百度搜索框
driver.find_element_by_id("kw").send_keys("迪丽热巴")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()

name定位

以禅道登录页面为例:
name在此处全局唯一,所以可以定位到。
往往不用元素的class_name经常重叠,以后用name定位及class_name定位,应保证其全局唯一。

from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "http://127.0.0.1:88/zentao/user-login-L3plbnRhby8=.html"
driver.get(url)
#用name来定位
driver.find_element_by_name("account").send_keys("admin")
driver.find_element_by_name("password").send_keys("Rui1234567")
time.sleep(6)
driver.find_element_by_id("submit").click()
time.sleep(6)
driver.quit()

link text定位

有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link
例:定位百度新闻:
在这里插入图片描述

from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
driver.find_element_by_link_text("新闻").click()
time.sleep(3)
driver.quit()

如果该页面有两个新闻链接,则不能按照上述操作。

Partial link text 定位

通过部分链接定位,这个有时候也会用到。拿上面的例子,我可以只用链接的一部分文字进行匹配

例:定位hao123
在这里插入图片描述

from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
driver.find_element_by_partial_link("123").click()
time.sleep(3)
driver.quit()

同样,如果内容在页面上有重复的,就无法应用 Partial link text 定位。

tag name 定位

从上面的百度输入框的属性信息中,我们看到,不单单只有id 和name 两个属性, 比如class 和tag name(标签名)input 就是一个标签的名字,可以通过find_element_by_tag_name(“input”) 函数来定位。
下面的程序执行失败,要用tag name 来定位,必须保证tag name 全局唯一

from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
driver.find_element_by_tagname("input").send_keys("迪丽热巴")
driver.find_element_by_tagname("input").click<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值