セレンの自動化

現在、徐々に仕事を解決するために、自動化の役割を理解することは、多くの場合、反復動作です。アクションは、各プロジェクトで使用する必要がある場合、我々は彼が自動化されたと考えることができます。

限りハンズフリーとして、小さくても機能とも呼ばれる自動化を実現しています。

テストプロセスの一部のゆっくりコーミング操作を自動化することができます。

 

シーンワン:

  • 背景:現在、アンドロイド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 

 

書かれたコード、デバッグの始まりは、常に要素が見つからない場合、最終的に問題を発見したと報告しました。
選択した要素の後に、[いいえ]をクリックします。クリックしてください()

 

おすすめ

転載: www.cnblogs.com/eosclover/p/11201153.html