做了大半个月的测试,总结下selenium使用注意实现

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时,注意类的继承
文件base.py:
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

正确的做法时
import base
class Service(base.Base)

你可能感兴趣的:(python)