ウェブ自動化スクリプトは、コードの一部を持っているから学ぶことができる、我々はいくつかのパラメータを変更し、このプロジェクトの現在の枠組みに移行する必要があります。クラスのロギング、ドライバオブジェクト、基本的な素子動作など。
一例として、商店街プロジェクトに、次のように関連するコードです。
ベースパッケージ(ログ、ドライバオブジェクト、操作するページ要素を含みます):
オペレーティング・ページ要素(base.py):
時間インポート
SLEEP時間のインポートから
のインポートページ
selenium.webdriver.support.waitインポートWebDriverWaitから
base.get_loggerインポートのgetLoggerから
#ログログを取得する
のgetLogger =()get_logger()ログインします。
クラスBase:
DEF __init __(自己、ドライバー):
ログを.info( "[塩基]:{}:ドライバオブジェクト初期化しましょう"形式(ドライバ))
self.driver =ドライバ
パッケージ要素の#検索方法
DEF base_find(セルフ、LOC、タイムアウト= 30、ポール= 0.5):
ログ.info( "[塩基]:位置決めされているデフォルトのタイムアウトが配置{}の要素:{}"形式(LOC、タイムアウト))
表示素子を用いて見つける#待ち
WebDriverWait(self.driver、戻り
タイムアウト=タイムアウト、
=ポーリングpoll_frequency)(ラムダX:x.find_element(* LOC).until)
パッケージ要素の#をクリックする方法
DEFのbase_click(セルフ、LOC):
log.info( "[ベース]:ビーイング:{}実装素子クリックイベント" .format(LOC))
self.base_find(LOC).click()
#入力素子封止方法の
DEFのbase_input(セルフ、LOC、値):
#1のGet要素
EL = self.base_find(LOC)
#クリア
log.info(「[塩基]:ビーイング:空の実装".format(LOC)){}要素
el.clear()
#入力
el.send_keys(値)
の包装の#テキスト情報取得方法
DEFのbase_get_text(セルフ、LOC):
log.info(" [ベース]:アクセス:{}要素のテキスト値」.format(LOC))
の.text戻りself.base_find(LOC)
テーマの#カプセル化方法
base_get_image DEF(自己):
log.info( "[ベース]:エラーテーマを呼び出し、アサートされた")
self.driver.get_screenshot_as_file(.format(time.strftime( "%のY_%"を../画像/ PNG {}」。 M_%のSのD %%% H_ m_Low ")))
#は、包装要素の方法が存在するか否かを判定する
DEFのbase_element_is_exist(セルフ、LOC):
トライ:
self.base_find(LOC、タイムアウト= 2)
log.info(" [ベース]は{ }要素ルックアップはページがある、成功した「.format(LOC))
を返すがTrue位元素が存在している表す
除い:
log.info(」[ベース]:{}要素のルックアップが失敗した、全く現在のページ」.formatが存在しない(LOC))
Falseを返します#は存在しない要素を表し
、このメソッドを使用する必要があります#戻るホーム(ページのショッピングカート、注文、支払いを)
:DEFのbase_index(セルフ)
SLEEP(2)
self.driver.get(page.URL)
#スイッチフレームフォームメソッドを
base_switch_frame DEF(セルフ、名):
self.driver.switch_to.frame(名)
バックデフォルトのディレクトリ方式に#
DEFのbase_default_content(セルフ):
self.driver.switch_to.default_content()
によって呼び出され、ウィンドウを切り替えるために#
デフbase_switch_to_window(自己、タイトル):
log.info( "タイトルが実行されているハンドオーバ:{}ウィンドウ"は.format(タイトル))
self.driver.switch_to.window(self.base_get_title_handle(タイトル))
#は、タイトルページハンドルメソッドを取得
DEF base_get_title_handle(セルフタイトル):
#現在のページにすべてのハンドルを取得
:self.driver.window_handlesでのハンドルのための
log.info( "であるトラバースハンドル:{} - > {} "形式は(ハンドル、self.driver.window_handles。 ))
#のスイッチハンドル
self.driver.switch_to.window(ハンドル)
log.info(「ハンドオーバ:{}ウィンドウ」.format(ハンドル))
#現在のページのタイトルを取得し、指定されたパラメータが同じタイトルであるか否かを判断する
現在のページのタイトルを分析log.info(」:{ {}}指定されたタイトルに等しい"フォーマット(self.driver.title、タイトル))。
self.driver.title ==タイトル場合:
!。log.info("条件を満たしているが、現在のハンドルを返す{}「形式(ハンドル))
#は、ハンドルを返す
リターンハンドル
ドライバーオブジェクト(get_driver.pyを):
セレンからインポートwebdriverを
インポートするページ
クラスgetDriver:
ドライバー=なし
#はドライバーの取得
@classmethodの
DEFのget_driver(CLS)を:
cls.driverがNoneの場合:
#はドライバー取得
cls.driver = webdriver.Firefox()#
の最大化ブラウザ
cls.driverを.maximize_window()
#URLを開く
cls.driver.get(page.URL)
#戻りドライバ
cls.driverリターン
#近いドライバー
@classmethodの
DEFのquit_driver(CLS):
:cls.driverのIF
cls.driver.quit()
#を設定する必要がありますいいえ、動作
cls.driver =なし
__name__ == IF '__main__':
getDriver()quit_driver()。
オブジェクト(get_logger.pyを)ログインします。
logging.handlersでインポート
クラスのgetLogger:
ロガー=なし
#最も外側で実行
#ファイル名= "./log/xxxx.log"
#は、ロガーを取得
@classmethodの
DEFのget_logger(CLS)を:
#をロガーが空の場合
cls.loggerがNoneの場合:
#取得ロガー
cls.logger = logging.getLogger()
#セットのデフォルトのログレベル
cls.logger.setLevel(logging.info)
#取得プロセッサのコンソール
SH = logging.StreamHandler()
#ファイル(時間)を扱う取得
TH logging.handlers.TimedRotatingFileHandler =(ファイル名= "../ログイン/ xxxx.log"
= "ミッドナイト"、
間隔= 1、
BACKUPCOUNT = 30、
エンコード= "UTF-8")
#取得フォーマッタ
FMは=「%(いるasctime)S %が(levelname)S [%(名)S] [%(ファイル名)S(%(FUNCNAME )S:%(LINENO)D] - %(メッセージ)は「S
FMT = logging.Formatter(FM)
#プロセッサの設定フォーマット
sh.setFormatterを(FMT)
th.setFormatter(FMT)
にプロセッサを追加する#ビューアログ
cls.logger.addHandler(SH)
cls.logger.addHandler(TH)
#をロガー返す
リターンcls.logger
定義されたテストスイートを(run_main.pyは、プロジェクトディレクトリの直下に配置されます):
リーダーパケット#
インポートunittestの
インポート時間
tool.HTMLTestRunnerインポートHTMLTestRunnerのから
テストスイートで定義された#スクリプト
#= unittest.defaultTestLoader.discoverスイート(」./ 『)
最も外側のランニング#
スイート= unittest.defaultTestLoader.discoverを(』。 /スクリプト")
#レポートジェネレータのディレクトリとファイル名
dir_path =" ./report/{}.html".format(time.strftime("%Y_%m_%d% H_%M_%S「))#
のGETファイルストリームそして呼び出しは実行実行
F ASオープン(dir_path、 "WB")で:
。HTMLTestRunner(ストリーム= F、タイトル= "Tpshopモール自動テストレポート"、説明= "オペレーティングシステム:win7の")、実行(スイート)
キットで(ツール)のファイルが保存されHTMLTestRunner.py
これらは一般的にウェブの自動化のコード、オンデマンドの使用を使用したPythonスクリプト言語です。