一、什么是Selenium?
是一个模拟控制浏览器操作的自动化库,它可以做到
- 元素定位,
- 鼠标事件,
- 浏览器事件,
- js脚本执行等操作。
二、什么是webdriver?
WebDriver是W3C的一个标准,由Seleniumz主持,主要目的是通过WebDriverAPI控制电脑上的浏览器,相当于一个selenium和浏览器之间的驱动。
需要注意!不同浏览器,需要安装不同的WebDriver。(如chrome需要下载chromedriver)
三、怎么使用?
1、创建WebDriver对象,相当于启动了浏览器
driver = webdriver.Chrome()
2、对WebDriver对象的操作可以抽象成你怎么去控制浏览器,常用的有:
- 访问URL driver.get("http://www.python.org") - 刷新页面 driver.refresh() - 前进后退 driver.forward()/driver.back() - 关闭浏览器 driver.quit() - 关闭窗口 driver.close() - 执行js driver.execute_script(script,*args) - 获取cookies driver.get_cookies()
3、怎么模拟用户操作?
1)、通过WebDriver对象定位元素方法,找到元素对象(元素定位)
find_element_by_name() find_element_by_id() find_element_by_xpath() find_element_by_link_text() find_element_by_partial_link_text() find_element_by_tag_name() find_element_by_class_name() find_element_by_css_selector()
其中最常用的是find_element_by_xpath()!!
2)、对元素对象进行用户模拟的操作,如点击,输入等
点击: element.click() 发送文字: element.send_keys("username") 模拟键盘输入: (使用删除键): element.send_keys(Keys.BACKSPACE) 获取文本框的值: element.get_attribute('value') 提交表单: element.submit()
四、元素定位方法
1、xpath定位
1)、介绍
XPath,全称为XML Path Language,即XML 路径语言,它是一门在XML文档中查找信息的语言。XPath 最初设计是用来搜寻XML文档的,但是它同样适用于 HTML 文档的搜索。
2)、Xpath示例:
3)、利用Chrome浏览器的开发者工具,可以快速获取XPath表达式
2、CSS选择器定位
在css中,选择器是一种模式,用于选择需要添加样式的元素
五、Page Object Model(POM)
Page Object模式主要是将每个页面封装为一个类class,这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法,
写测试用例时就可以通过调用页面类的方法和属性来获取页面元素和操作元素, (写用例时,有涉及到的元素操作通用的,就需要加进对应Page中,方便集中管理)
这样优点是避免当页面元素的Xpath或属性改变时需要更改测试用例代码的情况,只要通过更改页面类的属性即可
六、结合Pytest使用
pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。并且pytest兼容unittest的用例,支持的插件也更多。
写用例:
@pytest.mark.xxx(给用例打标签,归类)
def test_waf_xxx(): (test开头的方法就是一个用例)
logger.info("#step1 create proxy")
webconsole.user_login() #利用webdirver在用户登陆界面进行用户登陆
webconsole.select_proxy_settings()
运行用例:
pytest -v -s --local chrome [用例文件相对路径]
七、自动化环境部署
1、拉取代码
2、创建虚拟环境
3、安装所有依赖
pip install -r requirements.txt
4、配置环境
1)、设置免密登陆 2)、对于要进行修改的文件,重新保存一个 3)、安装webdriver,与自己本地的浏览器对应
5、命令行运行以往的用例查看环境是否正常运行
py.test -v -s --local chrome xxx(用例py文件路径)
如果没有报错,即本地自动化环境部署基本完成,上面的执行命令会在执行路径时生成一个html报告,可在chrome中查看执行情况。
(-v的意思是显示详细的执行信息,-s表示可以显示打印信息,--local不是pytest的命令选项是libs里面解析的,表示本地执行)
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!