python selenium處理windows視窗
阿新 • • 發佈:2018-12-17
selenium本身處理不了windows視窗,需要藉助,PyAutoit包 與autoit工具
這裡以檔案上傳視窗為例:
1.安裝python pyauto包
pip install PyAutoit
2.安裝autoit工具,下載地址如下,這裡使用的是autoit3版本
3.處理檔案上傳window視窗
需要完成以下步驟:
1>.輸入檔案路徑
2>.點選,開啟按鈕
4.檔案上傳autoit python程式碼實現
1>通過auto軟體,抓取上傳視窗,屬性
2>引用python引用autoit包
import autoit#設定焦#點 autoit.control_focus("開啟","[Class:Edit; instance:1]") #輸入文字 autoit.control_set_text("開啟","[Class:Edit; instance:1]",r"C:\Users\Administrator\Desktop\226523.jpg") # 單擊按鈕 autoit.control_click("開啟","[Class:Button; instance:1]")
5.程式碼分解
以上三行程式碼即可,當然,你可能不太明白這些引數都是什麼意思,那麼下邊我們分別看一下原型。
Title
control:就是autoit抓出的control中的屬性。
control,在python程式碼中用 "[屬性:屬性值;屬性2:屬性值2]" 表示
1>autoit.control_focus():
@api.check(2, "Window/Control could not be found") def control_focus(title, control, **kwargs): """ :param title: :param control: :param kwargs: :return:""" text = kwargs.get("text", "") ret = AUTO_IT.AU3_ControlFocus( LPCWSTR(title), LPCWSTR(text), LPCWSTR(control)) return ret
2>autoit.control_set_text():
@api.check(2, "Window/Control could not be found") def control_set_text(title, control, control_text, **kwargs): """ :param title: :param control: :param control_text: :param kwargs: :return: """ text = kwargs.get("text", "") ret = AUTO_IT.AU3_ControlSetText( LPCWSTR(title), LPCWSTR(text), LPCWSTR(control), LPCWSTR(control_text) ) return ret
3>autoit.control_click():
@api.check(2, "send click message failed") def control_click(title, control, **kwargs): """ :param title: :param text: :param control: :param button: :param clicks: :param x: :param y: :return: """ text = kwargs.get("text", "") button = kwargs.get("button", "left") clicks = kwargs.get("clicks", 1) x = kwargs.get("x", INTDEFAULT) y = kwargs.get("y", INTDEFAULT) ret = AUTO_IT.AU3_ControlClick(LPCWSTR(title), LPCWSTR(text), LPCWSTR(control), LPCWSTR(button), INT(clicks), INT(x), INT(y)) return ret
總結:
1>安裝(auit和pyautoit包)
2>抓取(auit抓取上傳視窗)
3>編寫python程式碼(設定焦點,輸入文字,點選上傳)
注意,可以加入一些等待時間,還控制焦點與輸入間隔