运用Selenium和Apscheduler库完成一个小外挂

发表于:2016-5-20 11:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:brandonxiang    来源:51Testing软件测试网采编

  运用selenium和apscheduler库完成一个小外挂
  github源码在此,记得点星:
  https://github.com/brandonxiang/selenium_apscheduler_example
  引言
  机缘巧合,我看到一些python写的游戏外挂的教程(主要是网页游戏),也就是,点击屏幕位置。这也激发了我去实现类似的功能,主要用途是去定期点击浏览器屏幕上的某个控件去实现一些功能。当然这类似的工具还可以应用到其他地方,让人脑洞大开,例如火车抢票,定时打卡之类,内容有点敏感,就不再展开。
  原理
  这个小外挂基于python,运用了两个库selenium和apscheduler。
  其中,selenium是一个出色的浏览器操作库,英文叫做Web Driver,主要是用于控制(包括IE在内的)浏览器,网页测试。当然他也可以用作爬虫,参考我的爬虫之路 (静态+动态JS加载) selenium + PhantomJS,虽然我觉得爬虫用request+beautifulsoap会在效率上更好,因为它不经过浏览器端。同类型的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()则是跳转到某个网页。
  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()则是往控件内部传值。click()则是点击事件。
  WebDriverWait(browser,10).until(EC.title_contains("系统".decode('utf8')))
  当网页发生跳转,需要利用WebDriverWait(browser,时间)等待,否则页面加载不完整。然而,until(EC.title_contains("系统".decode('utf8')))则是等到直到title出现系统两个字。详细教程参考selenium官网
  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)
  总结
  这里将两个框架结合了一下。总结一下,首先了解控件的对应的id或者class等属性,然后针对某个控件通过属性进行捕获,最后生成点击,文本输入,页面跳转等事件即可。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号