首页 > 代码库 > 简单的看了看selenium+python后的一些感觉

简单的看了看selenium+python后的一些感觉

    开源和收费的总是有很大的差别的。selenium作为一款开源产品,确实已经很强大了,但是对于qtp这种nb产品来说还是显得太小儿科了。这种感觉就像是一个知识测试框架,而另一个是云测公司。

    废话少说,今天前来是总结我之前的一些东西。

    

from selenium import webdriver

driver = webdriver.Firefox()


#访问百度首页

first_url = ‘http://www.baidu.com‘

print ("now access %s" % (firist_url))

driver.get(first_url)


#访问新闻界面

second_url = ‘http://news.baidu.com‘

print ("now access %r" % (second_url))

driver.get(second_url)


#返回首页

print ("back to %r" % (first_url))

driver.back()


#前进到新闻页面

print ("forward to %r" % (second_url))

driver.forward()



#返回首页

print ("back to %r" % (first_url))

driver.back()


#刷新界面

driver.refresh()


driver.find_element_by_id("idinput").clear()

driver.find_element_by_id("idinput").send_keys("小鸡炖蘑菇")

driver.find_element_by_id("idinput").clear()

上面是我写的简单的基于python的selenium代码,像我们测试中遇到的一些问题,比如验证码问题,设置断言问题我暂且不讲。这段代码其作用大家一看即懂,在这我也不解释了。    

    selenium定位页面元素的方式:id、name、class_name、tag_name、link_text、partial_link_text、xpath、css.定位方法:webdriver提供的写法:find_element_by_id。这样,我们就可以通过一些click、refresh、send_keys、等等来进行页面的一些功能操作。类似于我们手工录制脚本,来实现我们的操作。

    我们知道,在自动化测试中,如果只有脚本而没有框架是多么一件恐怖的事情,我们的脚本如果没有框架是一文不值的,因为我们的用例,我们的思路,真正依靠的是框架去实现,脚本仅仅是代替了我们测试中的“点点点”。

    unittest为我们提供了一个非常好的解决方案,大家如果学习selenium的时候建议大家也看一下。unittest有四个重要概念,即:test fixture,test case ,test suite,test runner。test case是测试用例,test suite是测试组件,用来组织测试用例,test runner是来执行测试,test fixture是对测试用例环境的搭建和摧毁。当然,以上仅仅是最基本的,如果我们做一个比较正常的自动化测试工作,我们必须要用到discover,这样才能将我们的脚本最大化最高限度的利用,避免重复编写。有过编程经历的人应该很好理解,这更像是封装调用。有的时候我们不能因为一个报错而停下我们运行的脚本,因为那样不值得,成本很高,所有还会有一些验证和跳过。

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import Select

from selenium.common.exceptions import NoSuchElementException

from selenium.common.exceptions import NoAlertPresentException

import unittest

import time, re


#继承unittest.TestCase

class BaiduTest(unittest.TestCase):

#初始化

    def setUp(self):

        sslf.driver = webdriver.Firefox()

        self.driver.implicitly_wait(30)

        self.base_url = "http://www.baidu.com/"

        self.accept_next_alert = Ture

#测试脚本

    def test_baidu(self):

        driver = self.driver

        driver.get(self.base_url + "/")

        driver.find_element_by_id("kw").clear

        driver.find_element_by_id("kw").send_keys("流柯")

        driver.find_element_by_id("su").click()

#查看定位元素是否存在和异常处理

    def is_element_present(self,how,what):

        try:

        self.driver.find_element(by = how , value = http://www.mamicode.com/what)

        except NoSuchElementException,e:

            return False

        return Ture

#查看是不是有警告框

    def is_alert_present(self):

        try:

            self.driver.switch_to_alert()

        except NoAlertPresentException,e:

            return     False

        return Ture

#获得警告框内容,关闭警告框

    def close_alert_and_get_its_text(self):

        try:

            alert = self.driver.switch_to_alert()

            alert_text = alert.text

            if self.accept_next_alert:

                alert.accept()

            else:

                alert.dismiss()

        finally:

            self.accept_next_alert = Ture

#结束测试方法

    def tearDown(self):

        self.driver.quit()

        self.assertEqual([],self.verificationErrors)


#通过unittest.main()执行测试方法

    if __name__ == "__mian__":

        unittest.main()


本文出自 “测试技术问题总结” 博客,请务必保留此出处http://xiaowangu.blog.51cto.com/5707515/1935081

简单的看了看selenium+python后的一些感觉