系列導航
一、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])