私たちが知っているように、コードを実行すると、ドライブのインタフェースにアクセスするには、ブラウザを開くとき、セレンの使用は通常、ウェブの自動化を行います。そこにあるどのような方法は、コードをデバッグするときに聞かせて、インタフェースを実行せずに私たちを達成することができますが、インタフェースを遮蔽することができる他の事をする、答えはイエスです!
それに加えて、インターフェイスが実行せずに達成することができ、運営されています。
パイロットパッケージ:
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()の