你的第一个自动化测试:Selenium 自动化测试
前言:
让你掌握自动化测试暂时脱离手工点点点,本章节让你掌握 Selenium 如何定位、判定、操作元素(实现业务逻辑)
一. 前期准备
1、准备以下工具
1、Selenium下载地址:立即下载
2、通过 pip 命令下载:
pip install selenium
3、Firefox 驱动下载地址:立即下载
把下载的Geckodriver放入Python安装路径下的Scripts文件夹内
\python36\Scripts
4、目标测试地址:
https://www.cnblogs.com
https://www.baidu.com
备注:以上地址仅作为演示使用
二. 测试开始
1、Firefox 启动:
from selenium import webdriver driver = webdriver.Firefox() # 即可启动 Firefox 浏览器
2、打开网址:
from selenium import webdriver driver = webdriver.Firefox() driver.get('https://www.baidu.com/') # 打开百度首页
3、元素定位:
''' Selenium 作为一款自动化测试工具包,提供了多种多样的元素定位方式,下边我们讲几种定位的方式 通过元素 ID 来定位 通过元素 Class 来定位 通过元素 name 来定位 通过元素 xpath 来定位 ''' from selenium import webdriver driver = webdriver.Firefox() driver.get('https://www.baidu.com/') driver.find_element_by_id("kw") # 这是通过元素 ID 来定位 driver.find_element_by_class_name("s_ipt") # 这是通过元素 Class 来定位 driver.find_element_by_name("wd") # 这是通过元素 name 来定位 driver.find_element_by_xpath("//*[@id="kw"]") # 这是通过元素 xpath 来定位 输出: <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="d053531b-e9a8-4729-8c0b-91aae35a7203", element="5616f958-9fa8-4d09-a6ce-243e94acd1ea")> # 这就是因为他们定位的方式不同,但对象是一样的,也就是为什么打印出的结果都是 ...243e94acd1ea]
打印定位元素明细:
>>> print driver.find_element_by_id("kw") <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="d053531b-e9a8-4729-8c0b-91aae35a7203", element="5616f958-9fa8-4d09-a6ce-243e94acd1ea")> >>> driver.find_element_by_class_name("s_ipt") <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="d053531b-e9a8-4729-8c0b-91aae35a7203", element="5616f958-9fa8-4d09-a6ce-243e94acd1ea")> >>> driver.find_element_by_name("wd") <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="d053531b-e9a8-4729-8c0b-91aae35a7203", element="5616f958-9fa8-4d09-a6ce-243e94acd1ea")> >>> driver.find_element_by_xpath('//*[@id="kw"]') <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="d053531b-e9a8-4729-8c0b-91aae35a7203", element="5616f958-9fa8-4d09-a6ce-243e94acd1ea")> <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="d053531b-e9a8-4729-8c0b-91aae35a7203", element="5616f958-9fa8-4d09-a6ce-243e94acd1ea")>
4、判断元素是否存在:
# 通过 Python 特性检查元素是否存在 def test(): try: driver.find_element_by_id("kw") return True except: return False # 存在返回 True or False # ============= if driver.find_element_by_id("kw"): print("True") else: print("False") # 存在返回 True
5、元素的操作:
# == 入门常用 == # 操作单击按钮元素 driver.find_element_by_id("kw").check() # 填写文本内容 driver.find_element_by_id("kw").send_keys("Demo") # 清除文本内容 driver.find_element_by_id("kw").clear() # 提交表单内容 driver.find_element_by_id("kw").submit()
三. 完整代码
1、用户登录
from selenium import webdriver driver = webdriver.Firefox() driver.get("https://127.0.0.1/login") driver.find_element_by_id("name").clear() driver.find_element_by_id("name").send_keys("你的用户名") driver.find_element_by_id("passwd").clear() driver.find_element_by_id("passwd").send_keys("你的密码") driver.find_element_by_id("login").click() driver.close()
2、检查登录
xxxxxxxxxxxxxxxx