半月以上のテストを行い、seleniumの使用注意をまとめて実現しました
5196 ワード
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はブラウザを終了せず、コードの書き方
def tearDownClass(
cls):
cls.driver.close()
cls.driver.quit()
5.日志配置方法,既可以把日志打印到htmlreport上,又可以单独输出到日志文件:
6.
selenium 加载js文件
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では
ベースの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)
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
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
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では
ベースの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)