現在、徐々に仕事を解決するために、自動化の役割を理解することは、多くの場合、反復動作です。アクションは、各プロジェクトで使用する必要がある場合、我々は彼が自動化されたと考えることができます。
限りハンズフリーとして、小さくても機能とも呼ばれる自動化を実現しています。
テストプロセスの一部のゆっくりコーミング操作を自動化することができます。
シーンワン:
- 背景:現在、アンドロイドAPKプロジェクトパッケージを再生し、あなたはジェンキンスアカウントログインする必要があります--->を選択したジョブ--->環境とブランチを選択し、ジョブの詳細ページ内のパラメータを使用してビルドを選択--->構築することになりましたクリック
可変パラメータ:
ランタイム:【 "DEV"、 "TEST"、 "PRE"、 "RELEASE"】
ブランチ:【起源/マスターバグ、起源/マスター、起源/ NetHospital、起源/ 2.2.0R、起源/ 2.1.1R】需求
- 要件:ハンズフリー、すぐに構築し、該当するジョブを選択し、ログオン自動化します。
- コード
輸入unittestの からセレンインポートwebdriverをから時間インポートスリープ から selenium.webdriver.support.select インポートセレクト クラス:jenkins_unpack(たunittest.TestCase) @classmethod デフsetUpClass(CLS): cls.driver = webdriver.Chrome() cls.driver.maximize_window () DEF test_001_jenkins_login(自己): ユーザ名 = " ルート" passwdの = " 123456 " #打开URL self.driver.get(" のhttp:// localhostを:?8080 /ジェンキンス/ログインから=%2Fjenkins%2F " ) self.driver.find_element_by_name(' j_username ' ).clear() self.driver.find_element_by_name(' j_username ' ).send_keys(ユーザ名) 睡眠( 3 ) self.driver.find_element_by_name(' j_passwordという' ).clear() self.driver.find_element_by_name(' j_passwordという' ).send_keys(passwdの) 睡眠( 3 ) self.driver.find_element_by_id('Gen1の-YUI ' ).click() SLEEP( 10 ) DEFのtest_002_click_job(自己): "" " リストからジョブの詳細ページを入力してクリックして" "" self.driver.find_element_by_partial_link_text(' -doctor " ).click() SLEEP( 10 ) DEFのtest_003_unpack(自己): 「」「詳細ページには、環境を選択してのブランチ構築するために」「」 (self.driver.find_element_by_link_textを「パラメータでビルド」.click()) SLEEP( 5 ) #最初に選択されたインデックスに基づいて-テスト環境を選択 = self.driver.find_element_by_xpathランタイム(' // * [@ ID = "メインパネル"] /フォーム/テーブル/ TBODYの[1] / TR [1] / TDが[3] / DIV / SELECT ' ) #環境[ 「DEV」、「テスト」、 「PRE」、「RELEASE」] - OKインデックスクエリによって、他の2つの方法が試みない セレクト(ランタイム).select_by_index(「1 」) #を最初に選択されたインデックスに従って-選択NetHospital分岐 self.driver.find_element_by_xpath(" // * [ID @ = 'SELECT'] /オプション[4] " ).click() self.driver.implicitly_wait( 5 ) #1 分岐self.driver.find_element_by_xpath =(「/ / * [ID @ = "BRANCH-d6130d93-98b5-4095-a27e-1b868f289c9c "] /入力') #(分岐).select_by_visible_text( '起源を選択 / NetHospital')#を選択して問題があった #のクリック構築開始 self.driver.find_element_by_id(' YUI-Gen1の-ボタンを' ).click() @classmethod DEF tearDownClass(CLS)を: CLS .driver.quit() IF __name__ == ' __main__ ' : unittest.main()
知識に関連します
1.unittest.TestCase
セットアップ():各テストケースの実行前に実行
ティアダウン():各テストケースがなくなった後に実行
setUpClassを():あなたは@classmethodデコレータを使用する必要がありますが、唯一のすべてのケースの前に一度実行走る
tearDownClass():あなたは@classmethod装飾を使用する必要があります。すべてのケースの実行が完了した後に一度だけ実行されます
記事から:https://www.cnblogs.com/zpf1092841490/p/10114372.html
2.selenium 8ターゲティング方法---位置決め要素法
- driver.find_element_by_name() - 最も一般的で簡単な
- driver.find_element_by_id() - 最も一般的で簡単な
- driver.find_element_by_class_name()
- driver.find_element_by_tag_name() - ほとんどが飛んでいません
- driver.find_element_by_link_text() - 簡単接続アンカーテキスト
- driver.find_element_by_partial_link_text() - 簡単接続アンカーテキスト
- driver.find_element_by_xpath() - 最も柔軟性、汎用性
- driver.find_element_by_css_selector()
記事から:https://www.cnblogs.com/VseYoung/p/selenium_location_python.html
3.seleniumドロップダウンボックスの処理
テストを受けます
selenium.webdriver.support.select インポートセレクト ランタイム = self.driver.find_element_by_xpath(" // * [ID = "メインパネル" @] /フォーム/表/ tbody要素の[1] / TR [1] / TDの[。3 】/ DIV / SELECT 」) 選択(ランタイム).select_by_index(" 1 " )#インデックス0から開始 選択(ランタイム).select_by_value(" TEST " #=値"TEST"と表示属性値に基づいて) 選択(ランタイム)。 seletct_visible_text(「TEST 」位置決め#のテキスト値に応じて)
4.トップ3ソリューションでは、次の問題は、問題となっていました。JS私はそれが理由ではないと思います。私は、JSを知りません。
だから、比較死の方法を使用して:
self.driver.find_element_by_xpath(" // * [@ IDを= '選択'] /オプション[4] ").click()
self.driver.implicitly_wait(5 )
書かれたコード、デバッグの始まりは、常に要素が見つからない場合、最終的に問題を発見したと報告しました。
選択した要素の後に、[いいえ]をクリックします。クリックしてください()