Bootstrap

python自动化--selenium

python自动化–selenium

一. 思想

  1. selenium 中多个 WebDriver 实例对应一个 chromedriver 进程,一个 chromedriver 进程管理多个 chrome 进程。一个 WebDriver 实例对应一个浏览器窗口。
二. Selenium自动化测试思路

进行自动化登录:“互联网医院管理并进入任意网页”(原理都是一致的,大家可以选择自己学校的校园网或一些其他网站来练习)
首先我们获得北航vpn的登录网页:
browser = webdriver.Chrome()
browser.get(‘https://e1.buaa.edu.cn/users/sign_in’)
这样我们就打开了登陆界面,是这样子的:
点击chrome浏览器右上角,更多工具——选择“开发者工具”。我们就得到了下面的页面。
下面我们要找到登录的账号输入位置,密码输入位置,以及提交按钮。当我们将鼠标放在右侧代码上时,左侧会出现其多对应的区域,使用这种方法,我们可以一点一点定位如下:
可见右侧input标签就是输入框了,它有一个id是user_login,我们上文讲过,id如果不是动态id那就是独一无二的,可以直接获取,因此可以直接通过如下指令输入账号(密码同理):
browser.find_element_by_id(“user_login”).send_keys(“账号”)
browser.find_element_by_id(“user_password”).send_keys(“密码”)
其中使用send_keys()方法来送入数据
那么如何点击登录呢,同样我们找到对应的标签:
可见有一个name是commit,很幸运,这个界面上只有这一个元素的name是commit,因此可以直接通过name获取,接着调用.click()方法就可以完成点击登录。
browser.find_element_by_name(“commit”).click()
登录完成后是这个样子:
比如这时,我想登录北航图书馆,要怎么做呢?
同样的道理,打开开发者工具,找到北航图书馆对应的标签
我们这次使用find_element_by_xpath()方法来实现。可见如果要定位到该标签,我们先要定位到class为container的div标签,之后定位到其下的ul标签,之后定位到其下的第3个li标签,最后定位到a标签。之后就可以登录到北航图书馆的网站中去。

打开网页后需要登录,F12打开浏览器调试器,小箭头选取元素,查看登录框账号和密码的属性,一般都有ID。selenium可以通过以下各个方法获取元素并进行各种操作,具体解释请看上方链接文档:

find_element_by_id
find_element_by_name
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

其中id最为有效方便,优先考虑。选取完元素之后可以通过WebDriver API调用模拟键盘的输入和鼠标的点击操作。
测试报告和测试结果解决方案:
1、尽可能的做到数据与脚本的分离,使用数据参数化
2、页面元素容易变动,导致整个代码维护成本高-----使用PageObje的思想,将页面元素和页面模块的方法单独封装,当页面改动时,只需要修改封装的地方,代码维护量少
3、无人值守,测试报告能够自动运行–将测试报告放到指定的文件夹,使用unittest框架执行该文件夹下的所有用例
4、有对应的测试报告和测试结果-----自动生成测试报告,并将测试报告作为邮件的附件发送
三.

;