汎用スクリプト言語Pythonのウェブの自動化

ウェブ自動化スクリプトは、コードの一部を持っているから学ぶことができる、我々はいくつかのパラメータを変更し、このプロジェクトの現在の枠組みに移行する必要があります。クラスのロギング、ドライバオブジェクト、基本的な素子動作など。

一例として、商店街プロジェクトに、次のように関連するコードです。

ベースパッケージ(ログ、ドライバオブジェクト、操作するページ要素を含みます):

オペレーティング・ページ要素(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スクリプト言語です。

おすすめ

転載: www.cnblogs.com/ray-mr-huang/p/11526426.html