展开

文章目录

修改历史

历史修改版本

  1. 2021-03-24 09:19:57
  2. 2021-03-24 09:19:30
  3. 2021-03-24 09:15:43
  4. 2021-03-24 09:15:00
  5. 2021-03-23 16:26:06
  6. 2021-03-23 16:25:52

Selenium自动化测试工具简单使用示例

2021-03-23 16:00:46 测试相关 221

简介

软件测试一直是一个热门的话题,现阶段很多公司都倾向于自动化测试,像web应用通过selenium自动化测试框架就可以很好的模拟人工手动测试的工作,本文简单介绍一下Selenium最基本的使用方法。

1.安装浏览器驱动

访问下载链接,既可以进入chrome驱动下载页面,目前selenium支持chrome、Firefox、IE 以及Remote。

  • Windows安装

    将下载好的驱动文件放入任意位置即可,比如放在F:/ChormeDriver/chormedriver.exe中,我们将其路径设置到环境变量的Path中即可;

  • Linux中安装

    将下载好的驱动文件放入/usr/bin目录中即可

    sudo cp chromedriver /usr/bin

2.安装selenium

在你项目的环境中通过下面的命令进行安装

pip install selenium -i https://pypi.douban.com/simple

上面的-i参数是可选的,是指定在哪个pip在哪个源搜索selenium,这里指定的是douban的源,下载速度相较于默认的python.org要更加的快。

3.简单的示例

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
print(driver.title)
assert '百度' in driver.title
assert '我是' in driver.title

在上面的代码中,通过访问https://www.baidu.com来获取该网站的title信息,并判断百度以及我是是否在title中,运行结果如下。

因为我是没有包含在title中所以出错。

4.模拟键盘输入

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://2dogz.cn")
assert "Blogin" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("装饰器")
elem.send_keys(Keys.RETURN)
assert "装饰器" in driver.page_source
assert "No results found." in driver.page_source

通过Keys模块我们可以模拟键盘的输入,在上面的代码中我们做了如下的事情

  • 通过find_element_by_name来获取搜索的输入框

  • 通过send_keys在输入框中嵌入搜索关键字百度一下

  • 通过send_keys模拟按下ENTER按键,进入下一个搜索结果页面

  • 在搜素结果页面中判断装饰器是否在其中

  • 在搜索页面中判断No results found是否在其中

执行结果如下

浏览器页面

 

控制台输出

5.结合unittest使用

selenium自身不提供测试框架或者工具,我们可以通过Python 的unittest模块来写测试用例,也可以通过其他的的第三方测试工具如pytest或者nose等。

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class BaiduTest(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Chrome()

    def test_title(self):
        driver = self.driver
        driver.get('https://2dogz.cn')
        self.assertIn('Blogin', driver.title)


    def test_blog_search(self):
        driver = self.driver
        driver.get('https://2dogz.cn')
        search = driver.find_element_by_name('q')
        search.send_keys('装饰器')
        search.send_keys(Keys.RETURN)
        self.assertIn('装饰器', driver.page_source)
        self.assertNotIn('没有找到', driver.page_source)
        

    def tearDown(self) -> None:
        self.driver.close()


if __name__ == '__main__':
    unittest.main()

通过unittest模块将其与selenium结合起来实现自动化测试,上面的结果说明两个测试都是通过的,我们从网页中手动去搜索发下也是一样的结果。

当前共有1条评论


weiijang 用户

不过支持一下哈

清水 博主 回复:weiijang

谢谢哈 大家一起加油