IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Web自动化工具Selenium常用方法(Python) -> 正文阅读

[开发测试]Web自动化工具Selenium常用方法(Python)

Selenium概述

Selenium是一款开源的Web自动化框架,模拟用户操作浏览器的行为,主要用于界面自动化、浏览器兼容性测试。
优点:
1、跨平台,如:Windows、Linux 和 Mac等;
2、支持各种浏览器,如:Chrome、Firefox、Edge、IE、Opear等;
3、完全开源。
webdriver:
将浏览器原生的API封装成WebDriver API ,作为编程语言与浏览器通信的桥梁,从而达到操作浏览器的目的。
在这里插入图片描述
注:不同的浏览器,需要不同的webdriver,且webdriver的版本号与浏览器版本号需对应。

Selenium操作浏览器

1.启动浏览器

导包:

from selenium import webdriver

1)直接指定driver的路径

本文以Chrome浏览器为例

driver = webdriver.Chrome(executable_path="driver路径")

2)设置driver的环境变量

将webdriver放置路径添加环境变量:
环境变量添加步骤:桌面—>我的电脑—>属性—>高级系统设置—>环境变量—>系统变量找到path并选中—>点击编辑—>新建—>保存,如下步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推荐:一般直接将对应浏览器版本的driver文件放置在在python的安装目录下,省去再次添加环境变量(本人常用方法)。
设置环境变量后,可不用再次指定driver路径:

driver = webdriver.Chrome()

2.打开网页url

driver.get("http://xxxx")

3.浏览器其它控制

driver.maximize_window()  # 浏览器最大化
driver.minimize_window()  # 浏览器最小化
driver.set_window_size(1980,1080)  # 指定浏览器大小

4.无界面操作

options = webdriver.ChromeOptions()
options.add_argument('--headless') # 设置无界面
driver=webdriver.Chrome(chrome_options=options)

5.关闭浏览器:

close():关闭当前当前浏览器窗口
quit():关闭所有页面,即关闭浏览器
6、其它操作
前进:driver.forward()
后退:driver.back()
刷新:driver.refresh()

元素定位

1.常规定位方法

driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_css_selector()
driver.find_element_by_tag_name()
driver.find_element_by_class_name()
driver.find_element_by_xpath()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text():模糊查询

注:查找多个元素:将上述定位方法中的element改为elements即可,如:driver.find_elements_by_name(),唯一属性id除外

2.xpath的定位方法

**绝对路径:**以“/”表示,从HTML标签逐层向下寻找,如:/html/body/table/tbody/tr[2]/td[2]/div/div[2]/table[2]/thead/tr/th[1]
**相对路径:**以“//”表示,表示任意位置,依据给出的路径匹配节点
如://*[@id=“fileID”]
常用函数定位法:
使用contains方法,如:xpath=//input[contains(@id,‘abcd’)]
使用text()方法,如:xpath=//button[text()=‘保存’]
使用starts-with方法(同理还有:ends-with),多用于元素属性部分发生变化的情况,如:

# 如:id=abcd12312sdfsf342
xpath=//input[starts-with(@id,'abcd')]

一个元素需要通过多个属性值定位,可以用“and”,如:

//span[@id="fileID" and @class='classname']

3.css定位

常用的包含以下几种:
类选择:find_element_by_css_selector(".slg")
id选择:find_element_by_css_selector("#su")
标签选择:find_element_by_css_selector(“input”)
属性选择:find_element_by_css_selector("[name=‘kw’]")
层级关系:
find_element_by_css_selector(“span>input”)
find_element_by_css_selector(“form>input:nth-child(2)”) #查找form标签下第2个input元素
组合选择:find_element_by_css_selector(“form.fm>span>input.slg”)
其它方式:
find_element_by_css_selector("[class*=swait_lg]"),查找class属性包含“swait_lg”
find_element_by_css_selector("[class^=bba]"),以“bba”开头
find_element_by_css_selector("[class$=abb]"),以“abb”结尾

元素操作

点击:click()
清除原有内容:clear()
输入值:send_keys()
获取内容:text
获取元素属性:get_attribute()
判断元素是否显示:is_displayed()

焦点转换

1、转移到弹窗:

ele = driver.switch_to.alert
ele.accept() # 接受
ele.text # 获取弹窗内容
ele.dismiss() # 退出或取消

2、页内焦点切换: driver.switch_to.frame(frame)
退出当前焦点窗口到原窗口:driver.switch_to.default_content()
3、多窗口切换:

driver.switch_to.window(name)
handles=driver.window_handles()
driver.switch_to.window(handles[-1])

等待

selenium有3种等待方式:
1、强制等待

time.sleep(2)

2、显示等待(局部,针对某个元素)

WebdriverWait(driver,5,0.5).until(lambda driver:driver.find_element_by_xpath())

3、隐式等待(全局,可解决大部分的元素等待问题)

driver.implicitly_wait(20)

截图

1.截取整个网页:

driver.get_screenshot_as_base64()  # 保存的是base64的编码格式
driver.save_screenshot('XX/XX.png')  # 如果在alert之类的弹出对话框出现后截图,程序会抛出异常
driver.get_screenshot_as_png()  # 保存的是二进制数据,需要写成图片文件保存
driver.get_screenshot_as_file('XX/XX.png')  # 获取当前window的截图,截图成功返回True,出现IOError的时候返回False

2.截小图:

ele.screenshot()
ele = driver.find_element_by_id('msg')
ele.screenshot('./3.png')

鼠标键盘操作

常用工具:Actionchains、pymouse、pykeyboard、pyautogui
1.Actionchains常用鼠标操作:
单机:click()
双击:double_click()
移动到某个元素上:move_to_element
在某个元素上悬停:click_and_hold
将一个元素拖到另一个元素上:drag_and_drop
用法:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains(driver).context_click(driver.find_element_by_id('su')).perform()

注:鼠标的所有事件,必须使用perform()执行所有ActionChains中存储的行为

2.键盘操作:

from selenium.webdriver.common.keys import Keys

send_keys(Keys.ENTER)  # 键盘的回车事件
send_keys(Keys.BACKSPACE)  # 删除,回退
# 组合使用
send_keys(Keys.CONTROL,'a')  # 全选
send_keys(Keys.CONTROL,'c')  # 复制

调用JS方法

用法:driver.execute_script(js代码)
修改只读属性,如:driver.execute_script('document.getElementById(\'su\').readOnly=0;')
移动到页面底部

driver.excute_script("window.scrollTo(0,document.body.scrollHeight)")

注:本文是本人工作中学习及使用到的selenium常用方法,如有错误之处欢迎指出

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:03:26  更:2021-09-11 00:03:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:18:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码