由于公司网络管管控严格,服务器上访问外网需要进行身份认证(按理说递交个申请给开放相关域名外网访问就好,无奈不给通过,又想马儿跑又不给马吃草),正好前一阵撸课程的时候看到selenium可以实现自动化,顺便撸一波做个记录。
1、安装 selenium
pip install selenium
等待出现Successfully installed selenium
python3.7安装的时候默认安装了pip省心了不少,服务器端用的2.7还要自己撸
下载setuptools 和 pip
解压后进入目录,运行 python setup.py install
 
2、下载 chromedriver + chrome
下载地址:
chrome需要与对应版本号的chromedriver 相匹配的,版本号不匹配会报错
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
# driver = webdriver.Chrome()
当然也可以下载其他浏览器对应的驱动
# driver = webdriver.Firefox()
# driver = webdriver.Ie()
chromedriver.exe 放到python的安装目录下 或者Script目录下 应该是配置到path环境变量下的路径都可以
 
3、开撸一个简单的例子
#coding=utf-8
import time
from selenium import webdriver
import os
#打开浏览器
browser = webdriver.Chrome()
#请求连接
browser.get("http://baidu.com")
#获取页面元素 输入框
element = browser.find_element_by_id("kw")
#键入内容
element.send_keys("查询内容")
#获取页面元素 查询按钮
element= browser.find_element_by_id("su")
#触发元素点击事件
element.click()
#休眠5秒
time.sleep(5)
#关闭浏览器
browser.quit()
 
4、一些常用的操作
有需要还是查官方文档吧
 
1)执行JS
js = "aler('text')"
browser.execute_script(js)
2)窗口操作
  1. browser.maximize_window() # 全屏
  2. browser.minimize_window() #最小化
  3. print (browser.get_window_size()) #获取窗口大小
  4. browser.set_window_size(1280,800) # 设置分辨率 1280*800
  5. browser.close() #关闭当前串口
  6. browser.quit() #退出浏览器
3)元素定位
find_element_by_id() # document.getElementById()
find_element_by_name() #document.getElementsByName()
find_element_by_class_name() #document.getElementByclassName()
find_element_by_tag_name() #document.getElementsByTagName()
find_element_by_link_text() #文本链接定位
find_element_by_partial_link_text() #文本链接中部分文本进行定位 包含参数中的文本即可
find_element_by_xpath() #绝对路径定位
browser.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/form/div/div/div[2]/input")
从HTML标签开始描述出元素在dom树上的路径
也可以用"//标签[@属性名=属性值]" 例如:find_element_by_xpath(".//input[@id='kw']")
find_element_by_css_selector() #利用css选择器定位 类似JQuery
4)元素操作
clear 清除元素的内容,如果可以的话
send_keys 在元素上模拟按键输入
click 单击元素
submit 提交表单
browser.find_element_by_id("id").clear()
browser.find_element_by_id("id").send_keys("内容")
browser.find_element_by_id("id").click()
browser.find_element_by_id("id").submit ()
 
5、其他
服务器上执行时遇到错误提示
[22516:20196:0704/024642.979:ERROR:install_util.cc(597)] Unable to read registry value HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmentToken for writing result=2
解决方案如下:
在注册表里加一个值名称为MachineLevelUserCloudPolicyEnrollmen(数据为空)就可以了。
HKLM_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmen
 
Chrome正在受到自动软件的控制
option = webdriver.ChromeOptions()
option.add_argument(‘disable-infobars‘)
browser = webdriver.Chrome(chrome_options=option)
 
远程浏览器调用
远程浏览器调用无界面实现不会实际打开浏览器,运行速度很快
首先需要下载selenium-server ,地址:https://www.seleniumhq.org/download/
需要配置java环境
控制台输入:java -jar selenium-server-standalone.jar -port 9999 启动
webdriver.Remote(command_executor="[http://localhost:9999/wd/hub](http://localhost:4567/wd/hub "selenium 本地测试地址")", desired_capabilities=DesiredCapabilities.HTMLUNIT)

初探python+selenium的更多相关文章

  1. python+selenium 浏览器的问题

    以前用selenium调用firefox是不需要驱动的,最近安装了python3.52+最新的firefox 发现调不起来了 搜索以后发现Firefox 47+需要搞个firefox的驱动 gecko ...

  2. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  3. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  4. python+selenium+Robot

    准备工作: 1.下载python2.7 http://python.org/getit/ 2.下载下载setuptools [python 的基础包工具] 可以帮助我们轻松的下载,构建,安装,升级,卸 ...

  5. python+selenium运行报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    使用python+selenium运行自动化脚本时,打印某一段文字出现UnicodeEncodeError: 'ascii' codec can't encode characters in posi ...

  6. Functional testing - python, selenium and django

    Functional testing  - python selenium django - Source Code : from selenium import webdriverfrom sele ...

  7. python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  8. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...

  9. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

随机推荐

  1. Java中关于static语句块的理解

    Java中关于static语句块的理解 一.static块会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法. 实例一 public class A{ String name ...

  2. BAT面试常的问题和最佳答案

    原标题:BAT面试常的问题和最佳答案 技术面试 1.servlet执行流程 客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对 ...

  3. 动词 + to do、动词 + doing

    1. 含义有重大区别 动词+to do 与 动词 + doing,具有较大含义上的差别的动词主要有: stop finish forget 在这些单词的后面,自然 to do 表示未做的事,doing ...

  4. apache-spark导入eclipse环境

    工作中用到了apache-spark,想深入了解一下,决定从源码开始. 先导入到常用的ide,eclipse吧: 准备工作 1.  下载Eclipse:http://scala-ide.org/ 2. ...

  5. memcached缓存分布式部署方案

    一.分布式方案介绍 比较流行的两种方案: 1.取余分布: 计算key的哈希值,与服务器数量取余,得到目标服务器.优点:实现简单,当某台服务器不可用时,故障转移方便:缺点:当增减服务器时, Key与服务 ...

  6. angular 引入material-ui

    第一步:安装material和cdk和animations,一个也不能缺,否则会报错. npm install --save @angular/material @angular/cdk @angul ...

  7. ZOJ 1489 2^x mod n = 1 数论

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=489 题目大意: 给你正整数n,求最小的x使得2^x mod n = 1. 思路 ...

  8. 【例题5-8 UVA - 400】Unix ls

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设n个字符串中出现的最长的为len; 最后一列能容纳len个字符,然后前面的列能容纳len+2个字符. 每行最多60个字符. 按照这 ...

  9. ios 获取button所在的cell对象, 注意:ios7 =< System Version < ios8 获取cell对象的差别

    ios7 =< System Version< ios8 : ios7 =< System Version < ios8  下 button.superview.supervi ...

  10. heredoc(实现模板与代码的分离)

    heredoc(实现模板与代码的分离) 一.总结 heredoc实现模板与代码的分离,实现的是在后台编程语言中批量输出html代码,在这个批量输出的html代码中又可以嵌套编程语言变量.所以很方便. ...