セレン自動化スクリプトの開発(例1:ユーザ管理)


時間インポート

lib.pyseインポートPyseから

「」 '
#のPageObjectのアイデア:ページクラスに抽象化、要素は、このページに抽象としてのいずれかの方法で操作することができます
#のメリットを:モジュールは、カプセル化された、変更します時間、コードの一部を配置するように配置することができる
'「」
に注意することは#方法やアイデア、及び点:
上から下へ連続の順番でクラスの数、Bの後継A、Cがある#1、継承B、D ...統合のC
#2、ページがクラスである、または動作させる方法である各ページの任意の
#3は、各ページの終了後に、チェックが行われるべきでは、ページジャンプを参照してくださいページ後の要素は、ログインに成功し、終了ボタンの存在後など、存在している
要素は、あなたが全体のロケータTMP =「CSS =>#水平書くとき未満に位置している場合は、#4 >のdiv> div>のUL >李[ID =「00000000000000000000000000000000」は ]」、 ちょうど李[ID = 『00000000000000000000000000000000』]書かない
質問#5を、デバッグプロセスは、なぜが与えられているかわからないとき、要素の位置を決定する方法ではありません:
#印刷(self.pyse.wait_and_save_exception(TMP1は、「ふふふ」) )、印刷はすなわち、真または偽であることに基づいた位置決め誤差がない


#のアイデア:
。#### 1、page.py:クラスとページを格納するために使用されます操作の方法
のブラウザを選択するために、最初のパブリッククラスの機能を置く#1、
#2、最初のリリースとオープン関数url--アドレスにアクセスするための関数内で開いた公共のクラスはtest_zbox.py setUpClass例スクリプトと呼ばれる
アクセスと終了を終了するには、関数内のパブリッククラスを終了し、#3 -ことtest_zbox.py tearDownClass例で呼び出されたスクリプト

### 2、test_zbox.pyは:テストを置くために、そのようなログインとユースケースは、例のバグ言及
など、基本的なパスを格納する専用:### 3は、LIBはpath.pyを分散化ケースパス、パスレポート、エラー画像のパスを使用し
たレポートは、使用例のすべての間に存在するテスト、および実行後の結果を実行するために設計された### 4、run.pyはmain.pyで、

クラスBasePageクラス(オブジェクト):#は、いくつかの一般的な方法を置きますクラス
:__init __(自己)DEF
self.pyse = Pyse( 'クロム')のfirefox #pyseデフォルトがあるので、クロム定義することが必要と

DEFオープン(セルフ):#オープンURLの
self.pyse.open(「HTTP:// hf.zhuofansoft.com:8301/sxgov_mysql/「)

DEF自己(終了):使用後のURL#出口ページ
self.pyse.quit()

クラスLoginPage(BasePageクラス):クラス#ページ
DEF sendUsername(セルフ):
TMP = 'CSS =>#loginCode'
self.pyse.type(TMP、 'ADMIN')

DEF sendPasswd(セルフ):
TMP = "CSS =>#LOGINPASSWORD"
self.pyse.type(TMP '123')

DEF clickLogin(セルフ):
TMP =「= CSS > #submitButton「
self.pyse.click(TMP)

DEF checklogin(セルフ、名前に):#ログインページのチェック方法:ログイン成功後のページの特定の要素を見つけることができるようにするかどうかを確認するためには、例えば、唯一のログインに成功した後、持っています終了ボタン
TMP0 = 'CSS => [SRC = "systemIndex.do"]'
self.pyse.switch_to_frame(TMP0)
TMP = 'CSS => A [-lay HREF = "getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]'
リターン操作はスクリーンショットの失敗したときに、内部#pyseこれが正しいself.pyse.wait_and_save_exception(TMP、名)である場合にtrueを返す


クラスJczcPage(LoginPage):
DEF clickJczc(セルフ):
TMP = 'CSS => [レイHREF = "getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]'
self.pyse.click(TMP)


クラスYhglPage(JczcPage):
Yhclick(自己)DEF:
self.pyse.switch_to_frame_out()
TMP0 = 'CSS => [SRC = "getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]'
self.pyse.switch_to_frame(TMP0)
TMP = 'CSS =>#menu_list> UL>のLi [ID = "402881f95b4b1209015b4c14115c017d"]'
#プリント(self.pyse.wait_and_save_exception(TMP、 '用户管理'))
self.pyse.click(TMP)

DEF zengjia(自己):
TMP0 = 'CSS => [SRC = "SYS /ユーザ/ list.do"]'
セルフ.pyse。switch_to_frame(TMP0)
= 'CSS => [クラス= "BTN BTN原色"]' TMP1
self.pyse.click(TMP1)

クラスYhinfo(YhglPage):#フィルバグ情報ページクラスの
DEF名(自己):#モジュールが属し、低親点a、位置だけ親から、取得しtmp12にユニークになります
self.pyse.switch_to_frame_out()
TMP0 = 'CSS => #_ DialogFrame_0'
self.pyse.switch_to_frame(TMP0)
TMP1 = 'CSS =>#名'
self.pyse.type(TMP1、 'ジョン・ドウ。6')

DEF生年月日(セルフ):
TMP0 = 'CSS =>#生年月日'
self.pyse.click(TMP0)
self.pyse.switch_to_frame_out()
TMP1 = 'CSS => [hideFocus = "trueに"]'
self.pyse.switch_to_frame(TMP1)
TMP2 = '= CSS> TR> TD [クラス= "Wselday"]'
self.pyse。クリック(TMP2)

デフセックス(自己):
self.pyse.switch_to_frame_out()
TMP0 = 'CSS => #_ DialogFrame_0'
self.pyse.switch_to_frame(TMP0)
TMP1 = 'CSS =>。性的> DIV>イン[クラス= "iCheckヘルパー"]'
self.pyse.click(TMP1)

CARDNO DEF(自己):
TMP = 'CSS =>#CARDNO'
self.pyse.type(TMP、 '456789199911112222')


DEFモバイル(自己):
TMP = 'CSS =>#モバイル'
self.pyse.type(TMP、 '15812345678' )

DEF telphone(自己):
TMP = 'CSS =>#telphone'
self.pyse.type(TMP、 '021から1234567')

DEFポジション(自己):#领导
TMP = 'CSS =>#位置'
self.pyse .select_by_value(TMP、 '402882285f6ff04e015f700f4e1b0012')

デフメール(自己):
TMP = 'CSS =>#メール'
self.pyse.type(TMP、 '1 @ 1.com')

デフソート(自己):
TMP = 'CSS =>#ソート'
self.pyse.type(TMP、 '1')

DEF型(自己):
TMP = 'CSS =>#タイプ'
self.pyse.select_by_value(TMP、 '4028800b58cc8b450158ccd500ce0004')

districtName(自己)DEF:
TMP = 'CSS =>#districtName'
self.pyse.click(TMP)
TMP1 = 'CSS =>。入力グループ> DIV> UL> UL> LI> [ID = "districtTree_1_a"] '
self.pyse.click(TMP1)

organName(自己)DEF:
TMP1 =' CSS => TD [クラス= "table_text形態群"]> DIV>入力[ID =" organName "]」
self.pyse。クリック(TMP1)
TMP2 = 'CSS => TD [クラス= "table_textフォームグループ"]> div> div> UL> UL> LI> [ID = "sysOrganTree_11_a"]'
self.pyse.click(TMP2)

デフシュリ(自己):
TMP = 'CSS => table_text>のdiv [クラス= "iradio_square緑"]>イン[クラス= "iCheckヘルパー"]'
#TMP = 'CSS =>#管理>形態> DIV>テーブル> TBODY> TR> TD> DIV [クラス= "iradio_square緑"]>イン[クラス= "iCheckヘルパー"]」
#プリント(self.pyse.wait_and_save_exception(TMP、 '梳理没有定位到'))
self.pyse.click(TMP)

DEF square_green(自己):
TMP = 'CSS => TR [クラス= "ワークリスト"]> TD [クラス= "table_text"]> UL>スパン> div>のイン[クラス= "iCheckヘルパー"] '
self.pyse.click(TMP)

デフqdgl(自己):
#TMP =' CSS =>のdiv [クラス= "性的"]>ラベル[クラス]>のdiv [クラス= "icheckbox_square緑"]>入力[値= "2c98cbab6ae66587016ae73b51f2002f"]」
#1 TMP = 'のxpath => //のtbody / TR / TD / DIV /ラベル/ DIV /入力[@値= "2c98cbab6ae0f3a6016ae11487c60000"] [ID = "tbody1" @]'
=#TMP = 'CSS => TR [ID "ワークリスト"]> TD>テーブル> TBODY> TR> TD> DIV>ラベル> DIV>入力[値= "2c98cbab6ae0f3a6016ae11487c60000"] '
#TMP = 'CSS =>入力[値= "2c98cbab6ae66587016ae73b51f2002f"]'
#1 TMP =' CSS =>テーブル[クラス= "テーブル"]> TBODY> TR> TD>のdiv>ラベル> div>のイン[クラス= "iCheckヘルパー"] '
#のTMP ='のxpath => //入力[名@ =」 roleOid4028829d5a7ea57e015a7eaa9da10001"と@クラス= "最小限"と@値= "2c98cbab6ae0f3a6016ae11487c60000"] '
#のTMP ='のxpath => // tbodyの[ID @ =」tbody1 "] / TR [1] / TD [3] / DIV /ラベル[1] / DIV /入力[名前= @" roleOid4028829d5a7ea57e015a7eaa9da10001" ] '
tbody1 "TMP ='のxpath => // tbodyの[ID = @"] / [1] / DIV」[3] / DIV /ラベル[1] / TD TR
#プリント(self.pyse.wait_and_save_exception(TMP、 '清单没有匹配'))
self.pyse.click(TMP)


DEF jczc(自己):
TMP = 'のXPath => // TBODY [ID = "tbody1" @] / TR [2] / TD [3] / DIV /ラベル[1] / divの」
#印刷(self.pyse.wait_and_save_exception(TMP、 '基础匹配'))
self.pyse.click(TMP)

デフアカウント(自己):
TMP = 'CSS =>#ーアカウント
self.pyse.type(TMP、 'zs1234566')

パスワード(自己)DEF:
TMP = 'CSS =>#パスワード'
self.pyse.clear(TMP)
self.pyse.type( TMPは、 'zs1234566は')

:DEF(自己)保存
TMP = 'CSS => div>の[クラス= "layui層-BTN2"]'
self.pyseを。(TMP)をクリックします

(自己)DEFを確認します。
self.pyse.switch_to_frame_out()
TMP = 'CSS => #_ ButtonOK_1'
self.pyse.click(TMP)

checkYhinfo(自己、名)DEF:
#self.pyse.switch_to_frame_out()
TMP0 =「CSS => [SRC =」 getMenuList.do?permission=402881f95b4b1209015b4c0d15080157" ]」
self.pyse.switch_to_frame(TMP0)
TMP = 'CSS =>#menu_list> UL>のLi [ID = "402881f95b4b1209015b4c14115c017d"]'
戻りself.pyse.wait_and_save_exception(TMP、名)


クラスページ(Yhinfo):
渡し

ます。if __name __ == '__ MAIN__'
ページ=ページ()
page.open()
page.sendUsername()
page.sendPasswd()
のページを。clickLogin()
印刷(page.checkLogin( 'ログインに失敗しました'))

page.clickJczc()
page.Yhclick()
page.zengjia()
page.name()
page.birthdate()
page.sex()
page.cardNo()
page.mobile()
page.telphone()
page.position()
page.email()
page.sort()
page.type()
page.districtName()
page.organName()
page.shuli()
page.square_green()
page.qdgl()
page.jczc()
page.account()
page.password()
page.save()
page.sure()
プリント(page.checkYhinfo( '保存失败了'))



おすすめ

転載: www.cnblogs.com/zhaoxueying/p/11412127.html