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

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

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