Seleniumコピペ用
起動~操作時によく使用する処理をメモ用に残します。
・ヘッドレスモードでの起動や、ウィンドウサイズの指定。
・xpathやclassなどでクリックする処理など
のメモ書きになります。
サイトはテスト自動化の練習サイトを使用しています。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import time from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions # ヘッドレスモードを付与 options = Options() options.add_argument("--headless") # 通常 driver = webdriver.Chrome(ChromeDriverManager().install()) # ヘッドレスモードで起動 #driver = webdriver.Chrome(ChromeDriverManager().install(),options=options) # ブラウザを最大化で起動 # driver.maximize_window() # ブラウザのサイズを指定して起動 driver.set_window_size(1500,1000) # テスト自動化 練習サイト url = 'https://hotel.testplanisphere.dev/ja/index.html' # SeleniumでURLを起動する driver.get(url) time.sleep(2) # /*------------------------------------------ # ログイン処理 # --------------------------------------------*/ # Xpath でログインをクリックする driver.find_element(By.XPATH,'//*[@id="navbarNav"]/ul/li[2]/a').click() time.sleep(2) # Class でメールアドレスを送信する driver.find_element(By.CLASS_NAME,"form-control").send_keys("ichiro@example.com") # name でパスワードを送信する driver.find_element(By.NAME,"password").send_keys("password") # ID でログインボタンをクリックする driver.find_element(By.ID,"login-button").click() time.sleep(2) # /*------------------------------------------ # 宿泊予約の処理 # --------------------------------------------*/ # 宿泊予約 をXpathでクリックする driver.find_element_by_xpath('//*[@id="navbarNav"]/ul/li[2]/a').click() time.sleep(2) # お得な特典付プラン をClass(空白あり)でクリックする # Class = "btn btn-primary"の場合 # 複数存在するので、1番目を選択したい場合 # find_elementsとして、sを付ける # [0]が1番目となる。 driver.find_elements(By.CSS_SELECTOR,".btn.btn-primary")[0].click() time.sleep(2) |
行っていること
・Webサイトをサイズ指定で起動
・id,xpath,class,nameで要素を指定
・classに空白が存在する場合の指定
・classが複数存在する場合の処理
随時更新できればと思います。