selenium模块化实例

2019-04-14 21:55发布

模块化实例 脚本中有很多代码是可以模块化的,比如登录模块。我们的每一个用例的执行都需要登录脚本,那可我们是否可以将登录脚本独立到单独的文件调用。
下面以126 邮箱为例: #coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://www.126.com") #登陆 driver.find_element_by_id("idInput").clear() driver.find_element_by_id("idInput").send_keys("username") driver.find_element_by_id("pwdInput").clear() driver.find_element_by_id("pwdInput").send_keys("password") driver.find_element_by_id("loginBtn").click() #收信、写信、删除信件等操作 …… #退出 driver.find_element_by_link_text(u"退出").click() driver.quit() 从126 邮箱业务流程分析,所有的邮箱功能需要登录用户登录,如收信、写信、删除信件等操作。对
后功能测试用例来说,测试人员在执行的过程中可以一次登录验证所有的功能之后退出,但自动化测试要
保持用例之间的独立性,所以每一条自动化测试用例都需要登录和退出操作。那么,我们就可以把用例抽
象为公共函数,那么对于每一条用例当需要登录/退出时,只需要调用公共函数即可,降低了代码的重复
编写。从另一个角度来讲,哪果登录和退出的定位发生了变化,那么我们只用修改公共函数即可,省去了
对每一个用例中登录/退出脚本修改的工作量。
下面对登录和退出进行模块的封装。mail126.py #coding=utf-8 from selenium import webdriver #登陆 def login(): driver.find_element_by_id("idInput").clear() driver.find_element_by_id("idInput").send_keys("username") driver.find_element_by_id("pwdInput").clear() driver.find_element_by_id("pwdInput").send_keys("password") driver.find_element_by_id("loginBtn").click() #退出 def logout(): driver.find_element_by_link_text(u"退出").click() driver.quit() driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://www.126.com") login() #调用登陆模块 #收信、写信、删除信件等操作 logout() #调用退出模块 现在我们将登录的操作步骤封装到login()函数中,把退出的操作封装到logout()函数中,对于用例
本身只用调用这两个函数即可,可以把更多的注意力放到本例本身的操作步骤中。
当然,如果只是把步骤封装成函数并没简便太多,我们需要将其放到单独的文件中供其它用例调用。 #coding=utf-8 #登陆 def login(driver): driver.find_element_by_id("idInput").clear() driver.find_element_by_id("idInput").send_keys("username") driver.find_element_by_id("pwdInput").clear() driver.find_element_by_id("pwdInput").send_keys("password") driver.find_element_by_id("loginBtn").click() 当函数被独立到单独的文件中时做了一点调整,主要在函数的传参上,因为函数内部的操作需要使用
driver,但是driver 并没有在此文件中定义,所以需要调用的用例传递driver 给调用的函数。 #coding=utf-8 from selenium import webdriver import public driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://www.126.com") #调用登陆模块 public.login(driver) #收信、写信、删除信件等操作 #调用退出模块 public.logout(driver) 首先,需要导入当前目录中的public.py,在需要的位置调用文件中的login()和和logout()函数。
这样对于每个用例来说就简便了许多,也更易于维护。