Playwright可與頁面中的元素直接進行互動,輸入文字、選擇選單選項、點擊按鈕、下載及上傳文件等,這章節會介紹常用到的元素操作。 ### 1.輸入文字 Fill()/Type() 通常用在 <input>、<textarea>元素,輸入文字。 fill是一次將文字貼上,而type是模擬使用者一個字一個字打 ```python page.get_by_test_id('StarTime').fill('2023/07/01') page.locator('#Password').fill('admin1234') Page.locator('#UserName').type('asd9876') ``` ### 2.click()點擊 執行點擊動作,通常使用在<button><checkbox>上 ```python page.get_by_role('button',name='搜尋').click() #也可把button封裝 button=page.get_by_role('button',name='搜尋') button.click() ``` ### 3.set_input_files()上傳文件 需上傳的圖片資料等放入project的資料夾中,需先定位到輸入框.再使用set_input_files().上傳檔案。 ```python page.get_by_text('圖片:').set_input_files('images.png') ``` ==若需點擊才可打開上傳視窗,可用page.expect_file_chooser()監聽彈出框,再輸人上傳的文件路徑== <br/> ### 4.expect_download()下載文件 此為監聽功能,我們可以獲得下載路徑、資訊、儲存檔案 ```python! with page.expect_download() as download_info: get_by_role(‘menuitem’,name="JPG").click() #點擊下載開始監聽 download=download_info.value path=download.path() download.save_as(download.suggested_filename)#可使用建議名稱存檔或自取 print(path) ``` ### 5.screenshot()頁面截圖 擷取當前頁面螢幕截圖,也可以針對元素截圖,path="輸入路徑名稱.jpg"檔案類型也可自行定義png、jpg等。 ```python! page.screenchot(path='xxx.png') ``` ### 6.wait 等待 **等待** ```python! page.wait_for_timeout(1000) #單位為毫秒 ``` **等待元素(狀態)** 為避免網頁未加載完成造成定位失敗,我們可以使用等待元素的狀態,如等待元素可見時再繼續執行腳本。 ```python! page.wait_for_selector('.btn',ststus='visible') #可見 page.wait_for_selector('.btn',timeout='5000')#自定義時間若超過五秒沒搜尋到元素會報錯 ``` **等待url** 跳轉頁面時我們可以使用此api 等待頁面跳轉至新的頁面才開始執行測試,例如點選導覽列某一頁籤後,我們使用此方法確認頁面是否已完成跳轉,確認已跳轉就可執行下一步操作 ```python! page.wait_for_url('https://example') ``` ### Expect 斷言/驗證 ![image](https://hackmd.io/_uploads/BkdZPeBca.png) 驗證元素是否可見 我點擊進入某個頁面應該要出現某一個文字或按鈕 ```python! 按鈕是否可見 ? button=page.locator('.btn') expect(button).to_be_visible() ``` 驗證文本是存在 ```python! 頁面標題文字是否正確 title=page.locator('.inner') expect(title.inner_text()).to_have_text("報表查詢") ``` 驗證api響應狀態 ```python! 頁面標題文字是否正確 with page.expect_response(url) as res: button.click() # 執行動作獲取響應,這個是點擊按鈕後獲取響應 response= res.value #response內容 response=response.json()#可轉為json格式做分析 ``` ==需練習可至 https://letcode.in/test==