2022年,总结了一份4000字Selenium 学习笔记

1529 篇文章 61 订阅
273 篇文章 20 订阅

目录

一. 背景

二. 安装selenium

三. selenium3 浏览器驱动

四. 简单使用

五. selenium元素定位

六. 控制浏览器操作


一. 背景

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

优点:

  • 框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。
  • 使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
  • 使用简单,可使用Java,Python等多种语言编写用例脚本。

重要链接:

官方GitHub地址:github.com/SeleniumHQ/…
官方项目介绍PyPI:pypi.org/project/sel…
Selenium-Python中文文档:selenium-python-zh.readthedocs.io/en/latest/

二. 安装selenium

1.安装python
第一步安装Python某个版本,建议安装Python3.x,因为Python2版本2020年已经不再维护了。
第二步把Python安装目录添加到环境变量中。
网上一搜就有很多教程,这里不再赘余。
2.安装selenium
如果您的系统上有pip,则可以简单地安装或升级Python绑定:

pip install selenium
复制代码

三. selenium3 浏览器驱动

当selenium升级到3.0之后,对不同的浏览器驱动进行了规范。如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动。

推荐使用 chrome 浏览器的 chromedriver.exe,对应 chrome 版本一定要对哦,不然运行不起来的。 浏览器驱动下载后,还需要添加到环境变量中。建议直接mv到/usr/local/bin目录下面,或者mv到Python安装根目录,因为这些地址已经加到环境变量中了。

四. 简单使用

编程语言的学习是从Hello Word入门。
我们selenium的学习当然也不能例外,下面就编写一个简单的Hello Word文件,开启学习之路。
打开一款Python编辑器,默认Python自带的IDLE也行。创建 hello.py文件,输入以下内容:

from selenium import webdriver          # 导入浏览器驱动

driver = webdriver.Chrome()             # 初始化
driver.get('https://www.baidu.com')     # 打开百度首页
print(driver.title)                     # 打印网页标题
driver.quit()                           # 关闭浏览器
复制代码

至此,如果能够成功打开浏览器,恭喜你已经成功了。

五. selenium元素定位

Selenium提供了8种定位方式:id、name、class name、tag name、link text、partial link text、xpath和css selector

这8种定位方式在Python selenium中所对应的方法为:
通过 id 定位:find_element_by_id()
通过 name 定位:find_element_by_name()
通过 class 定位:find_element_by_class_name()
通过 tag 定位:find_element_by_tag_name()
通过 link 定位:find_element_by_link_text()
通过 partial_link 定位:find_element_by_partial_link_text()
通过 xpath 定位:find_element_by_xpath()
通过 css 定位:find_element_by_css_selector()

如何使用?举个例子吧,假设某个web页面元素属性如下所示:

<html>
  <head>
  <body link="#0000cc">
    <a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
    <form id="form" class="fm" name="f" action="/s">
      <span class="soutu-btn"></span>
        <input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
复制代码
  • 通过id定位:
dr.find_element_by_id("kw")
复制代码
  • 通过name定位:
dr.find_element_by_name("wd")
复制代码
  • 通过class name定位:
dr.find_element_by_class_name("s_ipt")
复制代码
  • 通过tag name定位:
dr.find_element_by_tag_name("input")
复制代码
  • 通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")
复制代码
  • 通过css定位,css定位有N种写法,这里列几个常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
复制代码

接下来,我们的页面上有一组文本链接。

<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a class="mnav" href="http://www.hao123.com" name="tj_trhao123">hao123</a>
复制代码
  • 通过link text定位:
dr.find_element_by_link_text("新闻")
dr.find_element_by_link_text("hao123")
复制代码
  • 通过partial link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")
复制代码

关于xpaht和css的定位比较复杂,请参考:

六. 控制浏览器操作

1、控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸打开,让访问的页面在这种尺寸下运行。例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估;WebDriver提供了set_window_size()方法来设置浏览器的大小。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://m.baidu.com")

# 参数数字为像素点
print("设置浏览器宽480、高800显示")
driver.set_window_size(480, 800)
driver.quit()
复制代码

在PC端执行自动化测试脚本大多的情况下是希望浏览器在全屏幕模式下执行,那么可以使用maximize_window()方法使打开的浏览器全屏显示,其用法与set_window_size() 相同,但它不需要参数。

2、控制浏览器后退、前进 在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便地在浏览过的网页之间切换,WebDriver也提供了对应的back()和forward()方法来模拟后退和前进按钮。下面通过例子来演示这两个方法的使用。

from selenium import webdriver

driver = webdriver.Chrome()

#访问百度首页
first_url= 'http://www.baidu.com'
print("now access %s" %(first_url))
driver.get(first_url)

#访问新闻页面
second_url='http://news.baidu.com'
print("now access %s" %(second_url))
driver.get(second_url)

#返回(后退)到百度首页
print("back to  %s "%(first_url))
driver.back()

#前进到新闻页
print("forward to  %s"%(second_url))
driver.forward()

driver.quit()
复制代码

为了看清脚本的执行过程,下面每操作一步都通过print()来打印当前的URL地址。

3、刷新页面 有时候需要手动刷新(F5) 页面。

driver.refresh() #刷新当前页面
……

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走


这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….在下方我的公众号里免费获取~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值