Python Selenium UI自动化测试_python 自动化ui测试

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

pip install selenium==2.53.0

2.3 下载webdriver驱动

以chrome浏览器为例

  • 查看chrome浏览器版本:在地址栏输入 chrome://version

  • chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html
  • 下载与浏览器版本对应的chrome driver
  • 将下载好的chrome driver 解压,并放至到Python安装路径的根目录 (安装路径随意一个都行)
2.4 第一个自动化测试脚本
  • 打开浏览器
  • 访问百度首页

from selenium import webdriver # 导入webdriver

d = webdriver.Chrome() # 创建浏览器对象,此方法需要提前将webdriver驱动添加到系统环境变量

d.get(‘https://www.baidu.com’) # 调用get方法访问百度首页

d.close() # 关闭浏览器

3、webdriver API
3.1 浏览器操作

3.1.1 浏览器最大化

  • driver.maximize_window()

3.1.2 设置浏览器的宽和高

  • driver.set_window_size(480,800)

3.1.3 控制浏览器前进、后退

  • 前进: driver.forward()
  • 后退: driver.back()

3.1.4 关闭浏览器

  • 关闭当前窗口: driver.close()
  • 关闭浏览器: driver.quit()

3.1.5 浏览器刷新

  • driver.refresh()

3.1.6 获取当前URL

  • driver.current_url

3.1.7 获取当前title

  • driver.title

3.1.8 浏览器截图

  • driver.save_screenshot(图片路径)

–路径参数必填

–图片格式必须为png

3.2 元素定位

3.2.1 常见的属性

  • class:元素的类名
  • id:元素的唯一id
  • name:元素名,大部分情况唯一

3.2.2 八大元素定位方法

  • 元素定位和操作是自动化测试的核心部分
  • 一个元素就像一个人,有自己的特征(属性)
  • webdriver提供了一系列的元素定位方法,常用的有下面几种:
    • id:根据元素id值
      • name:根据元素name值
    • class name:根据元素class值
      • tag name:根据元素标签名字
    • link text:根据超链接的文本内容
      • partial link text:根据超链接的部分文本内容
    • xpath:根据xpath
      • css selector:通过css定位

xpath定位

语法

/ :从根节点选取(绝对路径)

// :从当前节点选取,不考虑节点的位置(相对路径)

… :选取当前节点的父节点 搜索框的上两级父节点: //*[@id=‘kw’]/…/…

@ :选取属性

举例:

相对路径: //div[@class=‘entry-sider-panel’]/section[@class=‘entry-sider-panel__bd’]/div/div[1]

CSS定位
语法
#:选取id属性,#kw
.:选取class属性
[]:选取其他属性,如:[id=‘xx’]

:层级选取,如:#form>span>input

举例:div.entry-sider-panel>section.entry-sider-panel__bd>div>div:nth-child(1)

3.3 元素操作

3.3.1 输入内容

send_keys()

3.3.2 点击元素

click()

3.3.3 清空元素文本内容

clear()

3.3.4 获取元素文本

text

  • 返回的是字符串

3.3.5 获取元素尺寸

size

  • 返回的是字典

3.3.6 获取元素的属性值

get_attribute(‘属性值’) --如id,class

4、设置等待时间
4.1 强制等待

sleep()

  • 需要先导包,import time
4.2 隐式等待

driver.implicitly_wait(秒)

  • 智能等待是在等待周期内一直等待元素是否出现,如果元素出现则继续,元素在等待周期内没有出现则报错
  • 推荐等待时间:10-30秒
  • 隐式等待只需设置一次就可以对整个脚本文件生效
4.3 显式等待

显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常

示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get(“http://www.baidu.com”) # 每隔 0.5s 检查一次(默认就是 0.5s), 最多等待 5 秒
element = WebDriverWait(driver, 5, 0.5).until( EC.visibility_of_element_located( (By.ID, “kw”)
) )
element.send_keys(‘selenium’)
driver.quit()

5、滚动条操作、下拉框操作
5.1 操作滚动条

注意:操作滚动天是通过js操作的,不是通过selenium操作的

方法一:

from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get(‘https://www.baidu.com’)

driver.set_window_size(688,476)

sleep(1)

js = ‘window.scrollTo(0,10000)’ # 拖动到底部

driver.execute_script(js) # 执行js命令

sleep(1)

js2 = ‘window.scrollTo(10000,0)’ # 从左拖到右

driver.execute_script(js2)

sleep(1)

js3 = ‘window.scrollTo(10000,10000)’ # 拖到右下角

driver.execute_script(js3)

sleep(2)

driver.quit()

方法二(推荐):

target = self.element(self.locators[‘product_des’]) # 定位到目标元素
self._driver.execute_script(“arguments[0].scrollIntoView();”, target) # 滚动条滑动到目标元素

5.2 操作下拉框

**方法一:**二次定位,先定位到下拉框,然后通过里面的值进行定位

**方法二:**通过select库进行操作

示例代码:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()

driver.get(‘file:///C:/Users/Eccang/Desktop/test.html’)
sleep(1)
# 方法一
# 二次定位
m = driver.find_element_by_id(‘abc’) # 先定位到下拉框
# m.find_element_by_xpath(“//*[@value=‘p1’]”).click() # 再定位一次选择里面的选项
# 方法二
Select(m).select_by_index(1) # 根据索引值选择
sleep(1)
Select(m).select_by_value(‘p2’) # 根据值选择
sleep(1)
Select(m).select_by_visible_text(‘深圳’) # 根据可见文本选择

6、多窗口处理、弹框处理
6.1 多窗口处理

根据窗口的handle值进行切换

获取当前窗口handle值:driver.current_window_handle

获取所有窗口handle值:driver.window_handles

根据handle值切换窗口:driver.switch_to.window(窗口handle值)

6.2 弹框处理

点击确定:driver.switch_to.alert.accept()

点击取消:driver.switch_to.alert.dismiss()

弹框中输入文本:driver.switch_to.alert.send_keys()

获取弹框中的文本内容:driver.switch_to.alert.text

7、框架切换、文件上传
7.1 框架切换

切换框架:driver.switch_to.frame(id/name)

返回默认框架:driver.switch_to.default_content()

7.2 文件上传

对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过 send_keys()指定本地文件路径的方式实现文件上传

对于非 input 标签实现的上传功能,我们可以通过模拟键盘敲击的方式实现,代码如下:

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值