ヘッドレス操作を使用して、セレンフリーインタフェース

私たちが知っているように、コードを実行すると、ドライブのインタフェースにアクセスするには、ブラウザを開くとき、セレンの使用は通常、ウェブの自動化を行います。そこにあるどのような方法は、コードをデバッグするときに聞かせて、インタフェースを実行せずに私たちを達成することができますが、インタフェースを遮蔽することができる他の事をする、答えはイエスです!

それに加えて、インターフェイスが実行せずに達成することができ、運営されています。

パイロットパッケージ:

selenium.webdriver.chrome.optionsインポートオプションから

次の設定を追加します。

chrome_options =オプション()

chrome_options.add_argument(「 - ウィンドウサイズ= 1920,1080」)#サイズ設定画面インタフェース

chrome_options.add_argument( ' - ヘッドレス')

ドライバ= webdriver.Chrome(chrome_options = chrome_options)

 

リファレンスコード:

セレン輸入webdriverをの
 インポートのインポートマルチプロセッシング
 から selenium.webdriver.chrome.optionsは、インポートオプション



クラス:Zutuan()
     デフ __init__ (自己):
         "" " 打开浏览器""" 
        self.chrome_options = オプション()
        self.chrome_options.add_argument (' --windowサイズ= 1920,1080 ' 
        self.chrome_options.add_argument(' --headless ' 
        self.driver = webdriver.Chrome(chrome_options =self.chrome_options)

    DEF :(自己、URL)open_zutuan
         "" " 传入组团URL """ 
        self.driver.get(URL) 
        self.driver.maximize_window()
        self.driver.refresh()time.sleep( 0.01) 
        self.driver.implicitly_wait(30)       TODO暗黙的に隐式等待、等待元素可见

    デフoption_element(自己、ユーザー、パスワード):
         "" " のxpath定位元素""" 
        self.driver.find_element_by_xpath(" // divの[ @クラス= "ログインA"] / I " ).click()
        time.sleep( 0.01 
        self.driver。find_element_by_xpath(' // divの[クラス= "タイトル" @] ' ).click()
        self.driver.find_element_by_xpath(' [タイプ= "テキスト"またはクラス@ = "userNameに" @] //入力' ).send_keys(ユーザー)
        self.driver.find_element_by_xpath(' //入力[@タイプ= "パスワード"] ' ).send_keys(パスワード)
        self.driver.find_element_by_xpath(' //のdiv [@クラス= "ボタン"] ' ).click( )
        time.sleep( 1 
        self.driver.refresh()


    DEF select_commodity(自己、コンテンツ):
         "" " 搜索组团商品"""
        TODOのself.contentインスタンスは、以下の方法、あなたはインスタンス属性溶液に加えた値を使用したい場合は、以下の方法に属性
        = self.content コンテンツ
        self.driver.find_element_by_xpath(' // INPUT [タイプ= "テキスト" @] ' .send_keys(コンテンツ))
        self.driver.find_element_by_xpath(' // divの[クラス@ = "検索"] ' ) .click()
        self.driver.refresh() 
        戻りコンテンツ

    DEF 結果(自己):
         「」「商品の検索に成功した後、判定メッセージは、ページが正常に行われたアサート「」」
        IF self.content self.driver.page_source:
             印刷(self.content)
            印刷製品検索が成功し、テストは合格しますそれ以外印刷' 商品検索エラー、テストが失敗した' 

    DEF クローズ(自己):
         "" " 閉じるブラウザを" "" 
        time.sleep( 1 
        self.driver.quit()


DEF RUN1():
    TODO操作の順序に従って、実行呼び出し方法 
    ZT = Zutuan()
    zt.open_zutuan(' http://www.zutuan.cn/index.html#/ ' 
    zt.option_element(' [email protected] '' mg123456 ' 
    zt.select_commodity(' バナナ'  
    ZT。結果()
    ZT。閉まっている()


クラスView_details(Zutuanが):
     「」「単一の製品のスターに項目を追加するために、」「」
    DEFのcheck_commodity(セルフ、ナンバー):
         「」「製品の詳細ページを入力するように、単一の製品の星[追加]をクリックし、「」」
        (self.driver.find_element_by_xpathを' // A [@target = "_ブランク"] / IMG ' ).click()
        self.driver.switch_to.window(self.driver.window_handles [ 1 ])
        self.driver.find_element_by_xpath(' // DIV [@class = "スタートチャイルド"] ' ).click()
        self.driver.find_element_by_xpath(' タイプ= "テキスト" @ // divの[クラス@ = "EL-dialog__body"] // INPUT [] ' ).send_keys(番号)
        self.driver.find_element_by_xpath(' //ボタン[タイプ= "ボタン"クラス@および@ = "EL-EL-ボタンボタン-危険"] ' ).click()
        (time.sleep。1 

    DEF 結果(セルフ) :
         「」「親クラスのメソッドをオーバーライドし、首尾よく成功ページを主張するために項目を追加した後、メッセージを決める」 『" 
        IF  正常に追加さ self.driver.page_source:
             印刷商品が正常でテストされます追加" 印刷追加のアイテムは、テストが失敗した失敗#を閉じるには、親クラスのメソッドを呼び出す
        )(スーパー。クローズ() 


デフRUN2():
    VD = View_details()
    vd.open_zutuan(' http://www.zutuan.cn/index.html#/ ' 
    vd.option_element(' [email protected] '' mg123456 ' 
    vd.select_commodity(' 苹果' 
    vd.check_commodity( 91628 
    vd.result()


DEF メイン():
    P1 = multiprocessing.Process(目標= RUN1)
    P2 = multiprocessing.Process(目標= RUN2)

    p1.start()
    p2.start()


もし __name__ == ' __main__ '
    main()の

おすすめ

転載: www.cnblogs.com/xiamaojjie/p/12041693.html