首页 > 代码库 > 简单的看了看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后的一些感觉