Selenium4自動化測試8--控制元件獲取資料--上傳、下載、https和切換分頁

万笑佛發表於2024-05-15

系列導航

一、Selenium4自動化測試1--Chrome瀏覽器和chromedriver

二、Selenium4自動化測試2--元素定位By.ID,By.CLASS_NAME,By.TAG_NAME

三、Selenium4自動化測試3--元素定位By.NAME,By.LINK_TEXT 和透過連結部分文字定位,By.PARTIAL_LINK_TEXT,css_selector定位,By.CSS_SELECTOR

四、jSelenium4自動化測試4--元素定位By.XPATH,元素定位最佳順序

五、Selenium4自動化測試5--控制元件獲取資料--ALERT彈窗、Confirm彈窗、Prompt彈窗

六、Selenium4自動化測試6--控制元件獲取資料--下拉框級聯選擇、checkbox選擇、時間選擇器

七、Selenium4自動化測試7--控制元件獲取資料--radio單選框、select下拉框選擇、iframe

八、Selenium4自動化測試8--控制元件獲取資料--上傳、下載、https和切換分頁

10-上傳

上傳不能模擬使用者在頁面上選擇本地檔案,只能先把要上傳的檔案先準備好在程式碼裡上傳

import time
from selenium.webdriver.support.select import Select
#pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By

# 定義一個driver的變數,用來接收例項化後的瀏覽器
# 指定瀏覽器的位置,解決瀏覽器驅動和瀏覽器版本不匹配的問題
chrome_location = r'D:\pythonProject2023\SeleniumFirst\chrome-win64\chrome.exe'
options = webdriver.ChromeOptions()
options.binary_location = chrome_location
driver = webdriver.Chrome(options=options)
# 使用get方法,訪問網址
driver.get("https://sahitest.com/demo/php/fileUpload.htm")
# 獲取input檔案上傳元素
upload = driver.find_element(By.ID,'file')
upload.send_keys(r"D:\pythonProject2023\SeleniumFirst\file\1.jpg")
time.sleep(2)
driver.find_element(By.NAME,'submit').click()
time.sleep(3)
driver.quit()

11-下載

import time
from selenium import webdriver
from selenium.webdriver.common.by import By


#指定下載路徑
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory":"D:\\pythonProject2023\\SeleniumFirst\\file"}
chromeOptions.add_experimental_option("prefs",prefs)


# 定義一個driver的變數,用來接收例項化後的瀏覽器
# 指定瀏覽器的位置,解決瀏覽器驅動和瀏覽器版本不匹配的問題
chrome_location = r'D:\pythonProject2023\SeleniumFirst\chrome-win64\chrome.exe'
options = webdriver.ChromeOptions()
options.binary_location = chrome_location
driver = webdriver.Chrome(options=options)
#視窗最大化
driver.maximize_window()
# 使用get方法,訪問網址
driver.get("https://registry.npmmirror.com/binary.html?path=chromedriver/")
time.sleep(3)
driver.find_element(By.XPATH,'/html/body/table/tbody/tr[156]/td[2]/a').click()
time.sleep(3)
driver.quit()

下載如何判斷下載完成了,這個在頁面上不能直接判斷有個可行的思路提供給大家,谷歌瀏覽器下載中的檔案字尾是.crdownload,可以去下載的路徑判斷有沒有字尾為.crdownload的檔案來判斷是否下載完成。

指定谷歌瀏覽器下載路徑的程式碼如下:

# 指定瀏覽器的位置,解決瀏覽器驅動和瀏覽器版本不匹配的問題
chrome_location = r'D:\ProgramData\pythonProject\auto\chrome-win64\chrome.exe'
options = webdriver.ChromeOptions()
#這裡的作用如果是https的服務,跳過點選繼續的那個步驟直接進入頁面。 options.add_argument('--ignore-certificate-errors') #指定下載路徑 prefs = {"download.default_directory":"D:\\bcpDown"} options.add_experimental_option("prefs",prefs) options.binary_location = chrome_location driver = webdriver.Chrome(options=options)

有的頁面點選後會開啟一個新的頁面,切換頁面的帶入如下:

注:不切換分頁後續所有的操作就都失敗了,這是一個容易出問題的點

#分頁了跳到另一個瀏覽器分頁
driver.switch_to.window(driver.window_handles[1])

相關文章