1.尽量不用send_key,使用js给input赋值。
send_key有时不起作用
2.execute_script 获取值的脚本写法
'var ret=$("div.datagrid-body > table > tbody > tr >
td:nth-child(2) > div").text();return ret;'
3.每个case不退出浏览器,代码写法
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.driver.implicitly_wait(30)
cls.driver.maximize_window()
cls.base_url = "http://10.10.12.18"
@classmethod
def tearDownClass(
cls):
cls.driver.close()
cls.driver.quit()
4.程序执行中,汇报错误:
self.assertFalse(ret1 or ret2),这样htmlreport输出的结果为failed,一开始学习是我就使用raise
5.日志配置方法,既可以把日志打印到htmlreport上,又可以单独输出到日志文件:
def init_log(report_dir):
logger = logging.getLogger(
'mylogger')
logger.setLevel(logging.INFO)
fh = logging.FileHandler(
'%s
\\
test.log' % report_dir)
fh.setLevel(logging.INFO)
ch = logging.StreamHandler(
stream=HTMLTestRunner.stdout_redirector)
ch.setLevel(logging.INFO)
formatter = logging.Formatter(
'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
return logger
6.
selenium 加载js文件
def load_jquery(self):
with open('jquery-1.11.3.js', 'r') as jquery_js: # read the jquery from a file
jquery = jquery_js.read()
self.driver.execute_script(jquery) # active the jquery lib
7.有时候由于页面各种层,导致click无法识别,可以js代替
8.运行所有test时,注意类的继承
class Base(unittest.TestCase):
def test_xxx(self)
print "test
"
文件
test_service.py:
from base import
Base
class Service(Base)
pass
在discover时会发现
Base的test_xxx
def create_suite():
test_unit = unittest.TestSuite()
# discover 方法定义
discover = unittest.defaultTestLoader.discover(
test_lists,
pattern='test*.py',
top_level_dir=None)
# discover方法筛选出用例,循环添加到测试套件中
for test_suite in discover:
for test_case in test_suite:
test_unit.addTests(test_case)
return test_unit
正确的做法时