Python3 自动化测试网页Selenium+PhantomJS

原创 2018年04月17日 14:45:20

Python3 自动化测试网页Selenium+PhantomJS


本文由 Luzhuo 编写,转发请保留该信息.
原文: https://blog.csdn.net/Rozol/article/details/79974692


以下代码以Python3.6.1为例
Less is more!

#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2018/4/17'

'''
## 介绍
 - Selenium
     - Selenium 是 Web 自动化测试工具, 为网站自动化测试而开发
     - 可以按指定的命令自动操作
     - 可以运行在所有主流的浏览器上 (使用时需要安装浏览器)
     - 文档: http://selenium-python.readthedocs.io/index.html
     - pip install selenium
     - selenium-3.11.0
 - PhantomJS
     - PhantomJS 是一个基于Webkit的无界面浏览器, 他会自己处理JavaScript, Cookie
     - 下载: http://phantomjs.org/download.html
'''

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys  # 按键操作
from selenium.webdriver import ActionChains  # 鼠标操作
from selenium.webdriver.support.ui import Select  # 下拉框
from selenium.webdriver.support.ui import WebDriverWait  # 循环等待
from selenium.webdriver.support import expected_conditions as ec  # 条件出发

def demo():

    driver = webdriver.PhantomJS(executable_path=r"C:\DevelopSoftware\phantomjs-2.1.1-windows\bin\phantomjs.exe")
    driver.get("http://www.baidu.com")
    driver.implicitly_wait(1)

    elem = driver.find_element_by_class_name("s_ipt")
    elem.clear()
    elem.send_keys("luzhuo.me")
    elem.send_keys(Keys.RETURN)
    driver.implicitly_wait(5)

    driver.save_screenshot("baidu.png")
    driver.close()
    driver.quit()


def funcs():
    # 创建浏览器
    # driver = webdriver.PhantomJS()  # 需要配置环境变量
    driver = webdriver.PhantomJS(executable_path=r"C:\DevelopSoftware\phantomjs-2.1.1-windows\bin\phantomjs.exe")

    driver.get("http://www.baidu.com")

    # --- 获取 ---
    # 获取标签
    # tag = driver.find_element_by_id("kw")  # id
    tag = driver.find_element_by_class_name("s_ipt")  # class
    tag = driver.find_element_by_name("name")  # name
    tag = driver.find_elements_by_tag_name("div")  # tag
    tag = driver.find_element_by_xpath("//input[@id='input-id']")  # xpath匹配
    tag = driver.find_elements_by_link_text("登录")  # link; <a href="http://xxx">登录</a>
    tag = driver.find_elements_by_css_selector("p.content")  # css selector; <p class="content">XXX</p>

    # data = tag.text  # 获得标签的内容
    # title = driver.title  # 获取标题
    # data = driver.page_source  # 获取网页源码
    # data = driver.get_cookies()  # 获取cookie
    driver.delete_cookie("CookieName")  # 删除cookie
    driver.delete_all_cookies()
    driver.add_cookie({'name': 'foo', 'value': 'bar'})
    url = driver.current_url  # 获取当前url

    # driver.save_screenshot("baidu.png")  # 截图

    # --- 操作 ---
    # 键盘操作
    tag.send_keys(u"西红柿")  # 往标签发送内容, 中文字加u
    # tag.click()  # 点击标签
    # tag.clear()  # 清空内容
    tag.send_keys(Keys.CONTROL, 'a')  # Ctrl+A  # 按下组合键
    # tag.send_keys(Keys.SHIFT, 's')  # Shift+S
    tag.send_keys(Keys.RETURN)  # 回车
    # 鼠标操作
    ActionChains(driver).move_to_element(tag).perform()  # 移到指定标签处
    # 单击:click(tag) / 双击: double_click(tag) / 右击:context_click(tag) / 左键按住:click_and_hold(tag) / 拖拽:drag_and_drop(tag1, tag2)
    ActionChains(driver).move_to_element(tag).click(tag).perform()  # 单击该标签


    # --- 表单操作 ---
    '''
    <select id="status">
        <option value=""></option>
        <option value="0">男</option>
        <option value="1">女</option>
    </select>
    '''
    select = Select(driver.find_element_by_id('status'))
    select.select_by_index(1)  # 选择第2个, 0开始
    select.select_by_value("0")  # 选择 value="0"
    select.select_by_visible_text(u"男")  # 选择 内容=男
    select.deselect_all()  # 取消选择


    # --- 弹框 ---
    alert = driver.switch_to_alert()
    alert.accept()  # 接收
    alert.dismiss()  # 关闭
    data = alert.text  # 内容
    alert.send_keys("text")  # 输入内容


    # --- 页面 ---
    driver.switch_to.window("window name")  # 切换页面
    handlers = driver.window_handles  # 获取窗口的handler
    driver.page_source.find('next')  # 搜索页面资源, 没有-1
    driver.forward()  # 前进
    driver.back()  # 后退
    # 隐式等待
    driver.implicitly_wait(10)  # 等待10s

    # 显示等待
    '''
    title_is / title_contains
    presence_of_element_located / presence_of_all_elements_located
    visibility_of_element_located / visibility_of
    text_to_be_present_in_element / text_to_be_present_in_element_value
    frame_to_be_available_and_switch_to_it / invisibility_of_element_located
    element_to_be_clickable / staleness_of
    element_to_be_selected / element_located_to_be_selected / element_selection_state_to_be / element_located_selection_state_to_be / alert_is_present
    '''
    element = WebDriverWait(driver, 10).until(
        ec.presence_of_element_located((By.ID, "idvalue"))  # 10秒内每0.5s查看页面是否出现 id="myDynamicElement"
    )


    # --- 执行JS脚本 ---
    js = "$('.scroll_top').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);});"  # 滚到底部
    js = "document.body.scrollTop=10000"  # 向下滚动10000px(差不多到底部)
    driver.execute_script(js)


    # 关闭页面
    driver.close()
    # 关闭浏览器
    driver.quit()



if __name__ == "__main__":
    demo()
    funcs()
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Rozol/article/details/79974692

Selenium+PhantomJS自动化测试应用

使用Selenium+PhantomJS对查询系统进行自动化测试
  • u013023297
  • u013023297
  • 2017-07-05 17:31:50
  • 399

基于Python,Selenium和PhantomJS实现动态页面爬取

1.下载安装Python2.7,将Python安装目录加入系统环境变量PTAH中。 2.在Python官网下载SetupTools,解压安装。 3.安装SetupTools之后,在Python安装...
  • tiana0
  • tiana0
  • 2016-07-31 16:50:31
  • 2980

Python3实现简单的selenium自动化测试

本文参考OSChina的博主‘磁针石’的《使用Python学习selenium测试工具》,该文章中有些代码执行起来有些问题,在这篇文章中已经调通。另外,本文只是简单整理了下python实现seleni...
  • monkey7777
  • monkey7777
  • 2016-08-12 13:24:48
  • 3035

16、Selenium + Python 实现 UI 自动化测试-其它弹窗

事实上,由于Alert 弹窗不美观(样式不好修改),实际项目中大多数网页的弹框都是开发们好心自己做的(UI 设计的)。 来看看非Alert 类的弹窗吧! 一、Windows浏览器窗口 1...
  • duzilonglove
  • duzilonglove
  • 2017-09-27 14:13:37
  • 145

Selenium+PhantomJS抓取数据

Selenium在前面的一篇文章中说过是一种浏览器自动化测试的工具,可以利用浏览器的驱动去控制浏览器访问网站,从 而模拟浏览行为抓取数据,这种方式可以抓到更多的数据,但是效率不是很高,而且浏览器的页...
  • u013407099
  • u013407099
  • 2016-11-19 20:47:47
  • 393

HTMLTestRunner.py 支持python3亲测可用

  • 2018年03月09日 11:25
  • 25KB
  • 下载

自动化测试环境Python3+selenium2

安装Python3.5 官网:https://www.Python.org 下载完后会得到一个.exe后缀的文件,双击进行安装, 安装过程和一般Windows程序类似。安装完后,在菜单中就看到Py...
  • JOJOY_tester
  • JOJOY_tester
  • 2016-12-02 23:49:09
  • 1546

python3.5+selenium3.4自动化测试2_参数化

这边继续讲一个简单得登陆窗口,一般登陆窗口保护用户名和密码,那测试登陆的时候必然会用到不同的用户名和密码,这个时候就需要对参数化用户名和密码,先上一下代码from selenium import we...
  • qingche456
  • qingche456
  • 2017-05-22 17:16:11
  • 1322

phantomjs运行报错available via screen

phantomjs运行到用xpath定位元素的时候报错available via screen 调用火狐浏览器这段代码正常运行...
  • qq_38219609
  • qq_38219609
  • 2018-01-07 10:15:17
  • 243

python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)

框架2.0_unittest今天讲的是unittest单元测试框架,在框架1.0的学习中我们不需要去理解什么类和函数,但是到2.0就要开始接触类的继承和函数的调用。先上个之前的例子# _*_ codi...
  • qingche456
  • qingche456
  • 2017-08-15 23:35:32
  • 400
收藏助手
不良信息举报
您举报文章:Python3 自动化测试网页Selenium+PhantomJS
举报原因:
原因补充:

(最多只允许输入30个字)