您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
運用Selenium和Apscheduler庫完成一個小外掛
作者:brandonxiang 發(fā)布時間:[ 2016/5/20 15:00:46 ] 推薦標簽:功能測試工具 單元測試

  運用selenium和apscheduler庫完成一個小外掛
  github源碼在此,記得點星:
  https://github.com/brandonxiang/selenium_apscheduler_example
  引言
  機緣巧合,我看到一些python寫的游戲外掛的教程(主要是網(wǎng)頁游戲),也是,點擊屏幕位置。這也激發(fā)了我去實現(xiàn)類似的功能,主要用途是去定期點擊瀏覽器屏幕上的某個控件去實現(xiàn)一些功能。當然這類似的工具還可以應用到其他地方,讓人腦洞大開,例如火車搶票,定時打卡之類,內(nèi)容有點敏感,不再展開。
  原理
  這個小外掛基于python,運用了兩個庫selenium和apscheduler。
  其中,selenium是一個出色的瀏覽器操作庫,英文叫做Web Driver,主要是用于控制(包括IE在內(nèi)的)瀏覽器,網(wǎng)頁測試。當然他也可以用作爬蟲,參考我的爬蟲之路 (靜態(tài)+動態(tài)JS加載) selenium + PhantomJS,雖然我覺得爬蟲用request+beautifulsoap會在效率上更好,因為它不經(jīng)過瀏覽器端。同類型的Web Driver庫還有許多,不在這里展開。
  然而,apscheduler是一個定時框架,支持python解釋器和cron格式。
  用法
  克隆源碼,安裝第三方庫,運行腳本即可。
  git clone https://github.com/brandonxiang/selenium_apscheduler_example.git
  pip install -r requirements.txt
  源碼
  selenium
  引用webdriver獲取瀏覽器,webdriver提供了Firefox,PhantomJS等多款國外瀏覽器可選。browser.get()則是跳轉(zhuǎn)到某個網(wǎng)頁。
  from selenium import webdriver
  browser = webdriver.Firefox()
  browser.get("http://XX.XX.com/")
  find_element_by_id和find_element_by_tag_name則是通過id或者tag_name去找到對應的元素。send_keys()則是往控件內(nèi)部傳值。click()則是點擊事件。
  WebDriverWait(browser,10).until(EC.title_contains("系統(tǒng)".decode('utf8')))
  當網(wǎng)頁發(fā)生跳轉(zhuǎn),需要利用WebDriverWait(browser,時間)等待,否則頁面加載不完整。然而,until(EC.title_contains("系統(tǒng)".decode('utf8')))則是等到直到title出現(xiàn)系統(tǒng)兩個字。詳細教程參考selenium官網(wǎng)
  apscheduler
  通過BackgroundScheduler()生成一個后臺定時框架,然后將其啟動。
  schedular = BackgroundScheduler()
  schedular.start()
  運用解釋器去設置時間間隔,這里使用cron,day_of_week是一個星期中的某幾天或星期幾,hour和minute是時和分,當然,也有秒的設定。你也可以不使用解釋器和cron來設置時間,那樣自由度更高。詳細教程參考apscheduler文檔
  @schedular.scheduled_job('cron',day_of_week='mon-fri',hour=8,minute=58)
  總結(jié)
  這里將兩個框架結(jié)合了一下?偨Y(jié)一下,首先了解控件的對應的id或者class等屬性,然后針對某個控件通過屬性進行捕獲,后生成點擊,文本輸入,頁面跳轉(zhuǎn)等事件即可。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd