学习WEB自动化测试第一天

一、哪些产品适合自动化?

1、项目稳定且周期较长的项目

2、软件需求变化不大的项目

3、自动化测试程序可以重复使用的项目

二、WEB自动化工具的选择

测试产品分为 B/S 和 C/S

B/S的工具:QTP\AutoRunner  appium

C/S的工具:Selenium、QTP、AutoRunner 、Robot Framework

三、什么时候可以开始做自动化测试?做自动化的目的是什么

1、单元测试、功能测试、接口测试已经完成的基础上开始做自动化测试

2、为了在做回归测试的时候,提高我们的测试效率

四、WEB自动化的环境搭建

(此处自动化环境搭建用的是Pycharm和Chrom,selenium框架工具也是对应Chrom的)

1、安装selenium框架工具pip install selenium


2、我们下载对应驱动包,然后放到path路径中

五、下载chromedriver

这里我用的是Chrom来做自动化,所以要安装chromedriver

因为chromedriver需要跟浏览器的版本一样,所以下载前看一下自己的Chrom版本,一定要版本相同,不然可能会出问题,如果没有版本完全一样的,前三段版本号能对的上就可以

Chrom会出现自动更新个的问题,如果自动更新就会跟驱动的版本不一样,所以需要先关闭Chrom的自动更新服务

修改 "C:\Windows\System32\drivers\etc\host 文件,在最后增加

127.0.0.1 update.googleapis.com

保存后 win+r 快捷键,输入cmd打开命令行,输入"ipconfig /flushdns" 刷新dns

重启浏览器即可

这里我提供一个下载chromedriver的地址:

Chrome for Testing availability

这里我们选择这个下载

下载完成后,然后放到path路径中

注意:放在Python的环境变量中,如果不知道在哪可以打开Python控制台输入一下:

先输入import sys回车

再输入sys.path 回车

这个路径就是放置selenium的,把下载的.exe扔进去即可

这里我再提供几个其他浏览器的驱动下载地址

Edge:[Microsoft Edge WebDriver - Microsoft Edge Developer](https://developer.microsoft.com/en-    us/microsoft-edge/tools/webdriver/)
 

Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

关于selenium工作原理:

selenium他会自动调用对应驱动的,打开浏览器,然后去访问服务器进行操作

六,编写自动化程序

接下来打开Pychram就可以开始编写自动化程序了

我们如何定位页面的各种元素呢?

我们可以对任意页面中按 F12,这时会打开浏览器控制台

我们可以看到页面各种元素,这样就能够知道我们要定位的元素是哪个

下面是一段简单的代码

from  selenium import webdriver  #导入selenium包

#打开Chrom浏览器
driver = webdriver.Chrome()

#打开浏览器后告诉浏览器你想要打开的网页,这里我用Bing做为例子
driver.get('https://bing.com')

#浏览器屏幕最大化
driver.maximize_window()

#为了使操作能更清晰的展示出来,我们可以设置延迟,这里设为两秒
time.sleep(2)

# 通过 ID 找到搜索框元素
search_box = driver.find_element(By.ID, 'sb_form_q')

time.sleep(2)

#在Bing页面的搜索框中输入"CSDN"
search_box.send_keys( 'CSDN')

time.sleep(2)

# 模拟按下回车键来执行搜索
search_box.send_keys(Keys.RETURN)

#执行完毕以后浏览器会自动关闭,这时我们设置一个input让代码执行到此等待指令
input("按任意键退出程序并关闭浏览器...")

#关闭浏览器
driver.quit()

各部分浏览器的driver

driver = webdriver.Chrome()     # 谷歌浏览器
driver = webdriver.Firefox()    # 火狐浏览器
driver = webdriver.Edge()       # 微软edge浏览器
driver = webdriver.Ie()         # ie浏览器
driver = webdriver.Opera()      # 欧朋浏览器
driver = webdriver.Safari()     # 苹果safari浏览器

driver常用的属性与方法:

get(url) 打开对应的网页

driver.back 后退

driver.forward() 前进

driver.refresh() 刷新

属性:

driver.current_url 获取页面的URL地址

driver.title 获取页面标题

driver.page_source 获取页面源码

driver.minimize_window() 窗口最小化

time.sleep(3)  等待3秒继续执行

driver.get_window_size() 获取窗口大小

driver_window_size(1440,900) 自定义窗口大小

driver.get_screenshot_as_file('screenshot.png') 获取屏幕截图

我们还可以使用鼠标键盘事件来触发

#导包
import time
from argparse import Action
from  selenium import webdriver
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://bing.com')
driver.maximize_window()#浏览器屏幕最大化
time.sleep(2)
# 通过 ID 找到搜索框元素
search_box = driver.find_element(By.ID, 'sb_form_q')
time.sleep(2)
#搜索框输入“CSDN"
search_box.send_keys( 'CSDN')
time.sleep(2)
# 模拟按下回车键来执行搜索
search_box.send_keys(Keys.RETURN)
time.sleep(2)
#返回上一级
driver.back()

time.sleep(2)
#打开CSDN网站
driver.get('https://www.csdn.net')
time.sleep(2)
#此处我们想要在CSDN页面进行进一个点击的操作
dice_box= driver.find_element(By.LINK_TEXT,'编程语言')#直接获取页面的text文本,这里比如CSDN中要选择“编程语言”这个URL
# 创建一个ActionChains对象
access=ActionChains(driver)#创建一个 ActionChains 对象,用于模拟鼠标操作
#  使用鼠标点击这个超链接
access.move_to_element(dice_box).click().perform()#先将鼠标移动到目标元素上,然后模拟点击操作,最后执行操作链
time.sleep(2)
#返回上一级
driver.back()
time.sleep(2)
#在这里我们选择CSDN官网的搜索框的元素
dice_box = driver.find_element(By.ID, 'toolbar-search-input')
time.sleep(5)
搜索内容
dice_box.send_keys("Betray391")
time.sleep(2)
#回车执行
dice_box.send_keys(Keys.RETURN)
time.sleep(2)
#返回上一级
driver.back()

input("按任意键退出程序并关闭浏览器...")
driver.quit()

最好让代码执行完毕关闭浏览器,如果中间手动关闭了浏览器会出现报错

这里的ActionChains(driver): 创建一个 ActionChains 对象,用于模拟鼠标操作

其实有很多方法都可定位 ’a‘ 标签

1. 通过链接的文本内容查找:
link = driver.find_element(By.LINK_TEXT, '点击这里')
2. 通过部分文本查找:
link = driver.find_element(By.PARTIAL_LINK_TEXT, '点击')
3. 通过 CSS 选择器查找:
link = driver.find_element(By.CSS_SELECTOR, 'a[href="https://www.csdn.net"]')
4. 通过 XPath 查找:
link = driver.find_element(By.XPATH, '//a[@href="https://www.csdn.net"]')
这些方法可以根据不同的场景,找到你需要点击的超链接元素

关于ActionChains

ActionChains 是 Selenium 中一个非常有用的类,用于模拟复杂的用户交互操作,如鼠标移动、点击、双击、拖放等。以下是一些常用的 ActionChains 方法及其用法:

1. 鼠标点击操作

click(): 单击指定的元素
click_and_hold(): 在指定元素上按住鼠标按钮,不释放
context_click(): 在指定元素上执行右键单击
double_click(): 在指定元素上执行双击操作

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get('https://bing.com')

element = driver.find_element(By.LINK_TEXT,'编程语言')

actions = ActionChains(driver)
actions.click(element).perform()  # 单击元素

2. 键盘操作

send_keys(): 向当前元素发送键盘输入。
send_keys_to_element(): 向指定元素发送键盘输入。
key_down(): 按住某个键,如 Shift 或 Ctrl。
key_up(): 释放某个按键

3.鼠标移动操作

move_to_element(): 将鼠标移动到指定元素上。
move_by_offset(): 将鼠标从当前位置移动指定的偏移量。
 

actions.move_to_element(element).perform()  # 将鼠标移动到元素上

4. 拖放操作

drag_and_drop(): 将元素从源位置拖动并放置到目标位置。
drag_and_drop_by_offset(): 将元素拖动到指定的偏移位置。

source = driver.find_element(By.ID, 'source')
target = driver.find_element(By.ID, 'target')

actions.drag_and_drop(source, target).perform()  # 拖放操作

5. 链式操作 

ActionChains 是支持链式调用,允许你将多个操作组合在一起,然后通过 perform() 执行

actions.move_to_element(element).click().send_keys("Hello").perform()

6. 释放操作

release(): 释放鼠标按键,通常与 click_and_hold() 配合使用

actions.click_and_hold(element).move_by_offset(100, 100).release().perform()


7. 滚动操作

scroll_by_amount(): 滚动页面或元素。
 

actions.scroll_by_amount(0, 100).perform()  # 垂直滚动页面

这些方法可以在自动化测试中模拟更复杂的用户行为(所有的测试都是为了防刁民)

这里有一个示例来综合展示这些功能

在搜索引擎中搜索关键词并点击第一条结果

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get('https://www.bing.com')

try: #这里做了一个错误处理
    # 查找搜索框并输入关键词
    dice_box = driver.find_element(By.ID, 'sb_form_q')
    dice_box.send_keys('CSDN')
    dice_box.send_keys(Keys.RETURN)

    # 等待搜索结果
    time.sleep(5)  # 暂停5秒

    # 使用鼠标移动并点击第一条结果
    actions = ActionChains(driver)
    actions.move_to_element(first_result).click().perform()

finally:
    driver.quit()

到此第一天的学习就结束了

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Betray391

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值