selenium + phantomjs/Chrome

1,selenium

    1,定义:Web自动化测试工具,应用于web自动化测试

2,特点:

  1,可以运行在浏览器上,根据指定的命令操作浏览器,让浏览器自动加载页面

  2,只是工具,不支持浏览器功能,需要与第三方浏览器结合使用

2,phantomjs

    1,定义:*面浏览器(无头浏览器)

     2,特点:

    1,把网站加载到内存(速度快)进行页面加载

    2,运行高效

3,安装

  1,Windows

    1,将下载的可执行文件放到Python安装目录的Scripts目录下

  如果路径自定义程序中要指定绝对路径

 2,cmd >>>  where Python

  2,Ubuntu

    1,将下载的 phantomjs 放到一个路径下

 2,添加环境变量:

    vi.bashrc添加

    export PHANTOM_JS=/home/.../phantomjs.23.8-67

    export PATH=$PHANTOM_JS/bin:$PATH

    终端:source.bashrc

    终端: phantomjs

伪代码:

from selenium import webdriver
import time

#创建浏览器对象,发送请求
driver = webdriver.PhantomJS()
driver.get("url")
time.sleep(0.5)
#获取截图
driver.save_screenshot("验证码.png")
#使用 用户名,密码 验证登录网址
uname = driver.find_element_by_name("form_email")
uname.send_keys('用户名')
upwd = driver.find_element_by_name('form_pasword')
upwd.send_keys('用户密码')
#使用验证码登录
YanZhengMa = driver.find_element_by_name('captcha_field')
k = input('请输入验证码:')
YanZhengMa.send_keys(k)
#截取完成界面
driver.save_screenshot("完成.png")
#点击登录按钮
login = driver.find_element_by_name('bn-submit')
login.click()
time.sleep(1)
#截取登录成功页面
driver.save_screenshot('登录成功.png')
#关闭浏览器
driver.close()
  • 常规界面操作方法:

  导入selenium模块:

  from selenium import webdriver

  设置浏览器驱动器:

  driver = webdriver.PhantomJS()   [ driver = webdriver.ChromeOptions() ]

  发送请求:

  driver.get('url')

  获取响应源码:

  driver.page_source

  driver.page_source.find("字符串")  查找字符串

  保存页面截图:

  driver.save_screenshot("name.png")

  退出浏览器:

  driver.quit()  [ driver.close() ]

  单元素查找(如果匹配到多个节点,则只返回第一个节点对象):

   driver.find_element_by_id("  ")[.txt]

   driver.find_element_by_class_name("  ")

   driver.find_element_by_xpath("xpath表达式")

  多元素查找:

   driver.find_elements_by_***

   #如果查询到一个结果,则返回节点对象,不是列表

   #如果查询到多个结果,则返回节点对象的列表

  对象名.send_keys("要发送的内容")

  对象名.click()

  • 操作键盘:

  导入模块:from selenium.webdriver.common.keys import Keys

  Ctrl+A : 对象名.send_keys(Keys.CONTROL,'a')

  Enter : 对象名.send_keys(Keys.ENTER)

  清空搜索框 : 对象名.clear()

 

上一篇:样条日期时间对象的平滑线不起作用


下一篇:python-以numpy返回矩阵的邻居之和的最简单方法