Python + Selenium自动化测试

这篇具有很好参考价值的文章主要介绍了Python + Selenium自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、python

1、python下载与安装

官方下载地址:Python Releases for Windows | Python.orghttps://www.python.org/downloads/windows/

下载应用程序,双击运行

Python + Selenium自动化测试

选择install now进行安装,下方勾选第二个选项系统可自动添加环境变量

 Python + Selenium自动化测试

等待python安装

Python + Selenium自动化测试

 安装完成后,点击“Close”关闭

Python + Selenium自动化测试

进入cmd验证是否已完成安装:

python -V

出现版本号则安装成功

Python + Selenium自动化测试

2、pycharm下载与安装

官方下载地址:Download PyCharm: Python IDE for Professional Developers by JetBrainsDownload the latest version of PyCharm for Windows, macOS or Linux.https://www.jetbrains.com/pycharm/download/#section=windows

进入官方下载地址

 专业版:付费但是可以试用

 社区版:免费

这里我们下载社区版就可以(左边是专业版,右边社区版)。觉得社区版不好用的兄弟可以下载专业版进行破解,百度有很多教程,这里我就不多讲了。

Python + Selenium自动化测试

点击Download进行下载,下载完成后得到一个可执行文件

Python + Selenium自动化测试

双击运行,点击Next

Python + Selenium自动化测试

可使用默认安装目录,也可以自定义目录。点击Next 

Python + Selenium自动化测试

 勾选选项后,点击“Next”

 Python + Selenium自动化测试

点击“Install”进行安装 ,安装完成需要等待一等钟左右

Python + Selenium自动化测试

安装完成后点击“Finish”

Python + Selenium自动化测试

 二、Selenium

1、Selenium简介

Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。Selenium 支持的语言包括C#,Java,Perl,PHP,Python 和 Ruby。目前,Selenium Web 驱动程序最受 Python 和 C#欢迎。 Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。

2、selenium安装

selenium的安装

打开 cmd,输入下面命令进行安装。

pip install selenium
# 如果第一个命令无法安装可以使用第二个
pip3 install selenium

3、浏览器驱动

针对不同的浏览器,需要安装不同的驱动。下面列举了常见的浏览器与对应的驱动程序下载链接。

  • Firefox 浏览器驱动:Firefox
  • Chrome 浏览器驱动:Chrome
  • IE 浏览器驱动:IE
  • Edge 浏览器驱动:Edge

这里以安装 Chrome 驱动作为演示。

在新标签页输入 chrome://settings/ 进入设置界面,然后选择 【关于 Chrome

查看自己的版本信息。下载对应版本的 Chrome 驱动即可。

Python + Selenium自动化测试

下载驱动

打开 Chrome驱动 。单击对应的版本。

 Python + Selenium自动化测试

 根据自己的操作系统,选择下载。

Python + Selenium自动化测试

 下载完成后,压缩包内只有一个 exe 文件。

Python + Selenium自动化测试

将 chromedriver.exe 保存到python安装目录

 Python + Selenium自动化测试

 4、selenium元素定位        

下面我们再来看看几种常见的页面元素定位方式。

元素示例:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

id 定位

标签的 id 具有唯一性。我们可以通过 id 定位到它,由于 id 的唯一性,我们可以不用管其他的标签的内容。

driver.find_element_by_id("kw")

name 定位

name 指定标签的名称,在页面中可以不唯一。

driver.find_element_by_name("wd")

class 定位

class 指定标签的类名,在页面中可以不唯一。

driver.find_element_by_class_name('s_ipt')

link 定位

link 专门用来定位文本链接,假如要定位下面这一标签。

<a href="#" target="_blank" class="mnav c-font-normal c-color-t">贴吧</a>

使用 find_element_by_link_text 并指明标签内全部文本即可定位。

driver.find_element_by_link_text("贴吧")

xpath 定位

xpath 是一种在 XML 文档中定位元素的语言,它拥有多种定位方式,下面通过实例我们看一下它的几种使用方式。

<html>
  <head>...<head/>
  <body>
    <div id="aa">
      <div class="bb">
        <div class="cc">
          <div class="dd">...</div>
          <div class="ff">
            <div class="ee">
			<div class="hh">
				<input id="ww" autocomplete="off" type="text" value="" placeholder="自动化测试">

根据上面的标签需要定位 最后一行 input 标签,以下列出四种方式,xpath 定位的方式多样并不唯一,使用时根据情况进行解析

# 绝对路径(层级关系)定位
driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div/div/input[1]")

# 利用元素属性定位
driver.find_element_by_xpath("//*[@id='ww']"))

# 层级+元素属性定位
driver.find_element_by_xpath("//div[@id='aa']/div/div/div[2]/div/div/input[1]")

# 逻辑运算符定位
driver.find_element_by_xpath("//*[@id='ww' and @autocomplete='off']")

css 定位

CSS 使用选择器来为页面元素绑定属性,它可以较为灵活的选择控件的任意属性,一般定位速度比 xpath 要快,但使用起来略有难度。

举个简单的例子,同样定位上面实例中的 input 标签

# 选择 id = 'aa' 的元素
driver.find_element_by_css_selector('#aa')

# 选择div class='hh'下面的input元素
driver.find_element_by_css_selector('div[class="hh"]>input')

注意:以上定位元素的方式是本人常用的,还有一些其他方式可上网查找。

5、浏览器控制

修改浏览器大小

webdriver 提供方法来修改浏览器窗口的大小。

from selenium import webdriver

# 设置浏览器浏览器的宽高为:600x800
driver.set_window_size(600, 800)

#全屏
driver.maximize_window()

浏览器前进、后退、刷新

from selenium import webdriver

#返回(后退)
driver.back()

#前进
driver.forward()

#刷新
driver.refresh()

关闭浏览器

# 关闭当前窗口
driver.close()

# 退出浏览器
driver.quit()

6、常见操作

webdriver中的常见操作有:

方法 描述
send_keys() 模拟输入指定内容
clear() 清除文本内容
is_displayed() 判断该元素是否可见
get_attribute() 获取标签属性值
size 返回元素的尺寸
text 返回元素文本

接下来还是用 百度 首页为例,需要用到的就是搜素框和搜索按钮。通过下面的例子就可以了解各个操作的用法了。

Python + Selenium自动化测试

# 定位搜索输入框
text_label = driver.find_element_by_xpath('//*[@id="kw"]')

# 在搜索框中输入 自动化测试
text_label.send_keys('自动化测试')

# 清除搜索框中的内容
text_label.clear()

# 输出搜索框元素是否可见
print(text_label.is_displayed())

# 输出placeholder的值
print(text_label.get_attribute('placeholder'))

# 定位搜索按钮
button = driver.find_element_by_xpath('//*[@id="su"]')
# 输出按钮的大小
print(button.size)
# 输出按钮上的文本
print(button.text)

7、鼠标事件

在webdriver 中,鼠标操作都封装在ActionChains类中,常见方法如下:

from selenium.webdriver.common.action_chains import ActionChains

#单击左键
# 定位搜索按钮
text_label = driver.find_element_by_xpath('//*[@id="kw"]')
# 单击左键
text_label.click()

#单击右键,鼠标右击的操作与左击有很大不同,需要使用 ActionChains 
# 定位搜索按钮
button = driver.find_element_by_xpath('//*[@id="kw"]')
# 右键搜索按钮,perform用于执行ActionChains中的操作
ActionChains(driver).context_click(button).perform()

# 双击
# 定位搜索按钮
button = driver.find_element_by_xpath('//*[@id="kw"]')
# 执行双击动作
ActionChains(driver).double_click(button).perform()

# 鼠标悬停
# 定位百度设置
collect  = driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')

# 悬停至设置标签处
ActionChains(driver).move_to_element(collect).perform()

8、键盘操作

webdriver 中 Keys 类几乎提供了键盘上的所有按键方法,我们可以使用 send_keys + Keys 实现输出键盘上的组合按键如 “Ctrl + C”、“Ctrl + V” 等。

from selenium.webdriver.common.keys import Keys

# 定位输入框并输入文本
driver.find_element_by_id('xxx').send_keys('Dream丶killer')

# 模拟回车键进行跳转(输入内容后) 
driver.find_element_by_id('xxx').send_keys(Keys.ENTER)

# 使用 Backspace 来删除一个字符
driver.find_element_by_id('xxx').send_keys(Keys.BACK_SPACE)

# Ctrl + A 全选输入框中内容
driver.find_element_by_id('xxx').send_keys(Keys.CONTROL, 'a')

# Ctrl + C 复制输入框中内容
driver.find_element_by_id('xxx').send_keys(Keys.CONTROL, 'c')

# Ctrl + V 粘贴输入框中内容
driver.find_element_by_id('xxx').send_keys(Keys.CONTROL, 'v')

9、元素等待

显示等待:

设置一个超时时间,每个一段时间就去检测一次该元素是否存在,如果存在则执行后续内容,如果超过最大时间(超时时间)则抛出超时异常(TimeoutException

from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
from time import time

# 定位元素
ele = driver.find_element_by_id('xxx')
# 设置显示等待,每0.5秒查找一次元素,超过10秒找不到元素则抛出异常
WebDriverWait(driver, 10, 0.5).until(lambda x: x.find_element(ele),message='找不到该元素')

隐式等待

隐式等待也是指定一个超时时间,如果超出这个时间指定元素还没有被加载出来,就会抛出 NoSuchElementException 异常。

from selenium import webdriver
from time import time

# 设置隐式等待时间为5秒
driver.implicitly_wait(5)
try:
    driver.find_element_by_id('kw')
except Exception as e:
    print(e)

# 代码运行到 driver.find_element_by_id('kw') 这句之后触发隐式等待,在轮询检查 5s 后仍然没有定位到元素,抛出异常

强制等待

使用 time.sleep() 强制等待,设置固定的休眠时间,无论元素有没有加载出来都会等设置的时间结束后执行下一步。

from selenium import webdriver
from time import sleep

# 点击id为‘kw’的元素
driver.find_element_by_id('kw').click()
# 等待5秒再执行下一步
sleep(5)

10、窗口切换

在 selenium 操作页面的时候,可能会因为点击某个链接而跳转到一个新的页面(打开了一个新标签页),这时候 selenium 实际还是处于上一个页面的,需要我们进行切换才能够定位最新页面上的元素。

窗口切换需要使用 switch_to.windows() 方法。

from selenium import webdriver
from time import sleep

# 假设点击这个元素在新标签打开了网页
driver.find_element_by_id('kw').click()

# 获取当前窗口的句柄
ser_1 = driver.window_handles
# 切换到第二个窗口,[0]是当前窗口,[1]是新打开的窗口
driver.switch_to.window(ser_1[1])

# 切换后就可以定位到新窗口的元素并执行操作

三、使用pycharm编写自动化测试脚本

1、配置解释器

        Python + Selenium自动化测试

Python + Selenium自动化测试

 Python + Selenium自动化测试

 中文插件安装:设置>plugins>在搜索框输入chinese

Python + Selenium自动化测试

2、创建项目

点击文件>新建项目

Python + Selenium自动化测试

 3、开始写脚本

新建一个python文件

Python + Selenium自动化测试

将上面所讲的基本操作添加进来就可以了 

Python + Selenium自动化测试

以上就是本人常用的基本操作,如果在项目中遇到需要其他操作的可以留言或者百度。

​​​​​​​

下一章节内容:pytest单元测试框架文章来源地址https://www.toymoban.com/news/detail-423833.html

到了这里,关于Python + Selenium自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自学Python+Selenium自动化测试

            俗话说的好,书读百遍不如手过一遍,而编程这东西是看书看视频一万遍都不如你自己多敲代码、写脑图、总结分享转换成自己的内容来的实在。         今天我就把最近学的(二) Selenium核心WebDriver API 简单总结一下,方便自己以后找出来看看。         一

    2024年02月05日
    浏览(51)
  • 【软件测试】python+selenium自动化测试

    一、什么是自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 单元测试 java的单元测试框架是Junit,在这里不再赘述。 接口自动化 接口测试就是

    2023年04月09日
    浏览(94)
  • 【自动化测试】基于Selenium + Python的web自动化框架

    Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,p

    2024年02月07日
    浏览(78)
  • AERONET AOD 数据自动化下载 + PYTHON + SELENIUM

    目录 5.05更新 增加FMF、SSA数据下载(见GitHub) 4.10更新 通过CURL、WGET等方式下载目标数据 获取下载地址 Using Tools to Save Web Output as a File Wget Curl AERONET AOD 数据下载  利用 PYTHON + SELENIUM 自动化下载中国站点数据 获得站点URL列表  获取站点数据时间 下载数据 写在前面的小结:预

    2023年04月08日
    浏览(47)
  • Python自动化测试【selenium面试题】

    一、selenium中如何判断元素是否存在? expected_conditions模块提供了16种判断方法,以下方法是判断元素存在DOM中: presence_of_element_located \\\"\\\"\\\" An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible. 判断元素存在DOM中,存在并不代表

    2024年01月20日
    浏览(63)
  • Python自动化测试之Selenium详解

    1.安装 完成自动化测试,需要配置三个东西。 selenium :pip就可以了 chrome :浏览器下载一个谷歌浏览器就行 chrome-driver :下载地址http://chromedriver.storage.googleapis.com/index.html 这里需要对应到自己的浏览器版本下载。 从浏览器上下载到本地后,本机mac上自动保存至Download/目录下

    2024年03月28日
    浏览(48)
  • Python + selenium 自动化测试框架详解

    项目自动化测试框架设计为4层 1.基础层(通用层) 基础层: 将通用,重复性比较高的代码封装到这里。 写通用的代码的。 其他3层想要的话,就可以直接调用。 例如: 读取测试数据的代码,读取配置信息的代码;截图的代码的,定位元素的代码等等 2.功能层(页面层) 功

    2024年02月03日
    浏览(51)
  • Python自动化测试利器selenium详解

    Selenium是一种常用的Web自动化测试工具,支持多种编程语言和多种浏览器,可以模拟用户的交互行为,自动化地执行测试用例和生成测试报告。Selenium基于浏览器驱动实现,结合多种定位元素的方法,可以实现各种复杂的Web应用程序的测试 自动化测试指软件测试的自动化,在

    2024年02月16日
    浏览(54)
  • selenium(4)-------自动化测试脚本(python)

    webdriverAPI 一)定位元素的方式,必问 1.1)id来定位元素,前提是元素必须具有id属性,因为有的元素是没有id的 1.2)name,元素必须有name,并且必须全局唯一 1.3)tagname,元素是一定有的,但是必须全局唯一才可以定位到元素 1.4)classname,class的名字,必须全局唯一 1.5)link_text,通过

    2024年02月02日
    浏览(56)
  • Python+Selenium自动化测试项目实战

    第 1 章 自动化测试 1.1、自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复的手工测试里面解脱出来,把时间和精力花到更好的地方去,

    2023年04月17日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包