python代碼學習——操作:日期控件和上傳檔案
- 日期控件的處理
-
- 上傳檔案
- 擷取元素屬性
日期控件的處理
- 日期控件的輸入框中有一個readonly的屬性,導緻文本框隻讀。
- 日期控件如果将選擇時間框點選之後,再去選擇日期,第一進制素不容易定位,第二不太穩定,是以,設定時間時是先更改日期控件文本框的屬性,然後直接輸入時間,來實作時間的選擇
- 代碼示例:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
import time
# 打開一個會話
diver = webdriver.Chrome()
# 全屏
diver.maximize_window()
try:
# 通路百度連結
diver.get("https://www.12306.cn/index/")
WebDriverWait(diver, 20).until(EC.visibility_of_element_located((By.ID, 'fromStationText')))#等待元素出現
diver.execute_script('document.getElementById("train_date").readOnly=false')#修改時間控件的屬性
diver.find_element_by_id("train_date").clear()#清空時間控件中的内容
diver.find_element_by_id("train_date").send_keys('2020-10-01')#重新輸入數值
diver.find_element_by_id("search-input").click()#點選其他地方,彈框消失
diver.find_element_by_id('search_one').click()#點選查詢按鈕
time.sleep(10)
diver.quit()
except Exception as e:
diver.quit()
raise e
上傳檔案
- 如果上傳檔案的輸入框可以輸入位址,處理方式和時間控件一樣
- 如果隻有上傳按鈕,需要輸入檔案位址并點選打開按鈕,這種方式使用selenium打開不了,使用的是wimdows控件
- 這時候,需要使用python第三方庫來進行處理,需要使用python pywin32庫,他的作用是事變對話框句柄,進而操作
- python pywin32隻能在windows上進行操作
- 處理流程:找元素——操作,路徑必須是絕對路徑
- 使用工具
- 使用方式如下:WinSpy
python代碼學習——操作:日期控件和上傳檔案日期控件的處理擷取元素屬性 python代碼學習——操作:日期控件和上傳檔案日期控件的處理擷取元素屬性 - handle中顯示元素
- text中顯示檔案名
- class為類型
python代碼學習——操作:日期控件和上傳檔案日期控件的處理擷取元素屬性 - 找的方式:第一步找到自己本身的位置
- 第二步:找到外面的大視窗(打開視窗)——class:#32770
- 定位時可直接點選軟體windows中的元素,點選後基本資訊中的資訊會改變,知道找到父級為#32770的位置
- 檔案最終的路徑:Edit——ComboBox——ComboBoxEx32——#32770
- 打開按鈕:button——#32770
- 代碼示例:
import win32gui
import win32con
def upload(filePath,browser_type="chrome"):
if browser_type == "chrome":
title = "打開"
else:
title = ""
#找元素
#一級視窗"#32770","打開"(傳參:text和class)
dialog = win32gui.FindWindow("#32770",title)
#
ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None) #二級
#參數:第一個是父對象,
#第二個是0,意思是從第一個子元素開始,一直周遊到最後一個,知道找到為止;數值可以改變,如果數值為3,就是從第四個子元素開始;
#第三個參數是class的 值;第四個的意思是:文本内容
comboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None) #三級
#編輯按鈕
edit = win32gui.FindWindowEx(comboBox,0,'Edit',None) #四級
#打開按鈕
button = win32gui.FindWindowEx(dialog,0,'Button',"打開(&O)") #四級
#往編輯當中,輸入檔案路徑 。
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath) #發送檔案路徑
#filePath為本地路徑
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) #點選打開按鈕
upload("D:\\1-課件目錄\\server.log")
擷取元素屬性
- 方法:get_attribute
- 需要傳屬性值,代碼:
driver.find_element_by_id("kw").get_attribute("屬性名稱")