从安装库、包和文件配置上手Web自动化测试,Python主要用selenium和unittest库,此外还有用于远程测试的Selenium Server包。浏览器需要配置chromedriver。
1.安装selenium库
可以在Pycharm,File—>Setting—>Project Interpreter中找到selenium库安装之。如图:
也可以在命令行中利用pip安装之,前提是pip命令包也安装过,且是最新版本。如图:上面显示我已经安装过了。
2.安装unittest库
步骤和安装selenium库是一样的,参考安装即可。
3.下载Selenium Server
这个jar包是用来进行远程测试的,刚开始上手测试可能用不到,但建议安装,不用以后浪费时间。
下载地址:https://www.selenium.dev/downloads/
下载后是个jar包,找个文件夹把它放进去好好保存哦!
4.chromedriver配置
其实用别的浏览器测试Web也可以,我是用Chrome学习的。
首先将自己的浏览器更新到最新版本,在URL地址栏输入chrome://version查看浏览器版本,如下所示:
然后到 http://npm.taobao.org/mirrors/chromedriver/ 将对应版本的浏览器驱动下载放到chrome浏览器的安装文件夹下,我的安装文件夹是默认选择的,即C:\Users\Jiang H.T\AppData\Local\Google\Chrome\Application,chromedriver放进去后是这样的:
弄好后,在环境变量的Path项把chromedriver的地址加进去。就是这里:
至此,配置部分就结束了。可以开始写测试用例脚本进行Web自动化测试了,下面给出测试Python官网搜索框功能的简单测试脚本。
5.Python官网搜索框功能测试
- 测试脚本代码
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 创建测试https://www.python.org/搜索功能的测试用例
class PythonorgSearch(unittest.TestCase): # unittest.TestCase表明这个类是个测试用例
def setUp(self) -> None:
self.driver = webdriver.Chrome() # 创建浏览器实例
def test_search_in_pythonorg(self):
driver = self.driver # 创建浏览器实例的本地引用
driver.get("https://www.python.org/") # 打开页面
self.assertIn("Python", driver.title) # 断言确保Python在标题中
elem = driver.find_element_by_name('q') # 找到搜索框
elem.clear() # 清空搜索框
elem.send_keys("pycon") # 输入搜索内容
elem.send_keys(Keys.RETURN) # Enter
assert "No results found." not in driver.page_source # 为了保证某些特定的结果被找到
def tearDown(self) -> None:
self.driver.close()
if __name__ == '__main__':
unittest.main()
- 测试过程
运行上面的程序后,测试脚本会调用chrome浏览器打开Python官网,定位到搜索框并在搜索框中输入“pycon”,得到结果后关闭当前网页。成功后,Pycharm会返回如下信息:
6.远程服务器测试
为了使用远程 WebDriver, 你应该拥有一个正在运行的 Selenium 服务器。 通过下列命令运行服务器(就是上面下载的那个jar包):
java -jar selenium-server-standalone-3.141.59.jar
得到这样的信息:
将上面测试用例的对应代码改成这个样子(按自己的需求改),就可以远程测试了:
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=DesiredCapabilities.CHROME)
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=DesiredCapabilities.OPERA)
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={'browserName': 'htmlunit',
'version': '2',
'javascriptEnabled': True})