iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Python

利用Python完成自動化測試專案系列 第 7

D7 與網頁互動

  • 分享至 

  • xImage
  •  

昨天介紹了如何定位元素,今天要介紹各個跟元件互動的方式,在這之前要先講如何把昨天的定位方法用到 selenium 中。

之前有提到,元素查找分成兩部分:找的方法與其內容,而在 find_element 中,它的寫法如下:

find_element(By.ID, 'test')

用 By 去選擇查找的方法,而後面放該內容的字串。
而要使用 By 需要先在檔案開頭導入

from selenium.webdriver.common.by import By

點擊按鈕

iT邦幫忙 為例,點進來就是技術問答的欄位,而我們像要換成技術文章的欄位。

2024-09-21 04-52-14

首先先尋找"技術文章"的元素,在 selenium 中,要點擊元素就在 find_element 後面加上.click()。

browser.find_element(By.XPATH, "//a[@class='menu__item-link ']").click()

這樣就可以讓 selenium 自動點擊按鈕。

輸入文字

現在我們想要輸入 python 相關內容的文章,我們可以把它拆解成三個步驟

  1. 點擊搜尋 icon
  2. 輸入內容
  3. 點擊搜尋

第二點要用到 .send_keys(""),括號內填入想要輸入的內容

把這三點轉換後的程式碼如下

browser.find_element(By.ID, 'searchDropdown').click()
browser.find_element(By.NAME, 'search').send_keys('Python')
browser.find_element(By.XPATH, "//button[@type='submit']").click()

這個功能除了文字外也可以傳遞,所以也可以用功能鍵的方式操作,例如送出Enter鍵,要先 import Keys 才能用。

from selenium.webdriver.common.keys import Keys
browser.find_element(By.NAME, 'search').send_keys(Keys.ENTER)

也可以用組合鍵的方式,例如在輸入文字前先清除預設在搜尋欄的文字

browser.find_element(By.NAME, 'search').send_keys(Keys.CONTROL, 'a')  # 全選
browser.find_element(By.NAME, 'search').send_keys(Keys.DELETE)  # 刪除所有選中的文字

滾動到指定頁面

在網頁中,如果要點擊的元素不在頁面上,程式會因為找不到元素而報錯,這個時候就可以透過滾輪滾到指定頁面出現的頁面。使用方法如下

browser.execute_script("arguments[0].scrollIntoView();",browser.find_element(By.ID, 'btn') 

這是利用執行 JavaScript 的程式碼來達到滾動視窗的目的。

今天介紹完了基本的互動方式,明天預計會帶到第一個實作。

9/22 更新 結果打完忘記發出去導致挑戰失敗,不過會繼續寫到30天為止


上一篇
D6 強大的定位功能-XPATH
下一篇
D8 實作發文自動化(1) 機密資料如何處理
系列文
利用Python完成自動化測試專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言