python+selenium实现登录账户后自动点击的示例

时间:2021-05-22

公司在codereview的时候限制了看代码的时间,实际上不少代码属于框架自动生成,并不需要花费太多时间看,为了达标,需要刷点时间(鼠标点击网页固定区域)。我想到可以利用自动化测试的手段完成这种无效的体力劳动。

首先,明确一下需求:   

  • 自动打开网页   
  • 登陆账号 
  • 每隔一定时间点击一下固定区域
  • 我想到的方案有两个,sikuli或者python+selenium。sikuli的优点是逻辑操作简单直接,使用图片作为标示,缺点是需要窗口固定,并且无法后台运行。selenium稍复杂一定,但是运行速度快,窗口可以遮挡。

    这里简单记录一下使用Python+selenium的小例子。

    使用的版本为Python3.3以及selenium2,Windows环境(现在已经支持3.0以上的了,多处论坛博客没有更新)。

    首先是软件的安装,Python不赘述了,记得设置环境变量。

    下面安装selenium,如果已经安装过pip。直接运行一下命令。

    pip install -U selenium

    另一种方式,https://pypi.python.org/packages/source/s/selenium/selenium-2.52.0.tar.gz下载并解压。这里简述一下windows版本,其实Unix下也差不多,使用Wget下载一下安装。

    使用命令(setup一般用于第三方模块的安装):

    cd c:\Python3\xxxxpython setup.py install

    安装过程中可能会出现ImportError: No module named setuptools,这是因为缺少setuptools模块,Python默认不安装。

    在http://pypi.python.org/pypi/setuptools上面提供了各系统的安装包和安装指南,对于Windows系统,下载https://bootstrap.pypa.io/ez_setup.py自动化安装脚本。

    运行:

    python ez_setup.py

    完成后再安装selenium即可。

    这里用我自己的实例简单的讲解一下流程。

    第一步先完成打开浏览器。

    selenium2结合了selenium和webdriver,直接引入各个浏览器相应的驱动,打开即可,注意chrome驱动可能需要另行安装。

    from selenium import webdriverbrowser = webdriver.Firefox()browser.get('https://mon.by import By

    这里使用另外一个函数,我不知道有什么区别- -。

    for i in range(100): elem=WebDriverWait(browser, 30).until( lambda x:x.find_element_by_xpath("//table[@class='aaa']"/td[1])) elem.click() time.sleep(20) print ("click",i)

    然后这里还要提一下wait函数,在selenium2中延迟等待分为两种,显示等待和隐式等待。  

    显示等待

    显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception。

    element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) )

    隐式等待

    注意,隐式等待是告诉设置所有dom元素在寻找某个元素的时候,如果没立即找到,再尝试这么长时间。

    browser.implicitly_wait(10) # seconds

    两者的区别在于一个是自己直接管理超时对象,一个是交给webdriver去做。

    当然也可以用休眠的方法干等。记得引入time包。

    time.sleep(20)

    这里只是简单的演示一下用法,有许多可以改进的地方,没有封装函数,么有使用多线程并发执行多个例程。以后有需求再改进。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章