由于公司网络管管控严格,服务器上访问外网需要进行身份认证(按理说递交个申请给开放相关域名外网访问就好,无奈不给通过,又想马儿跑又不给马吃草),正好前一阵撸课程的时候看到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. django-rest-framework框架 第一篇

    本课件是为了教学任务自己写的学习django-rest-framework框架. 方便自己授课,也成为学生的复习教程. 本课程学习后:具有REST编程思维:并可以通过django及专业的django- ...

  2. [React Intl] Render Content with Markup Using react-intl FormattedHTMLMessage

    In this lesson, we’ll use the react-intl FormattedHTMLMessage component to display text with dynamic ...

  3. [Angular2 Router] Redirects and Path Matching - Avoid Common Routing Pitfall

    In this tutorial we are going to learn how we can can configure redirects in the angular 2 router co ...

  4. 【例题 6-10 UVA - 699】The Falling Leaves

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 递归模拟就好. [代码] #include <bits/stdc++.h> using namespace std; c ...

  5. JAVA初始开发环境搭建

    上午想在一台新电脑上搭建java开发环境,在没有之前备份的情况下,单靠网络还真有点麻烦.最主要的原因是貌似在我当前的网络环境下jdk无法下载,官网这个链接半天打不开,http://www.oracle ...

  6. 关于stm32的启动模式

    1)用户闪存 = 芯片内置的Flash,这个应该就是在Keil中选择那个,每个芯片的flash不一样,具体可以在建立工程时查看内置flash的大小. 2)SRAM = 芯片内置的RAM区,就是内存啦. ...

  7. 50个SQL语句

    一个项目用到的50个SQL语句 转载 说明:下面五十个语句都依照測试数据进行过測试.最好每次仅仅单独执行一个语句. 问题及描写叙述: --1.学生表 Student(Sid,Sname,Sage,Ss ...

  8. Angular 2 HostListener & HostBinding

    原文 https://www.jianshu.com/p/20c2d60802f7 大纲 1.宿主元素(Host Element) 2.HostListener 3.HostListenerDecor ...

  9. 使用Perl批量读取文件最后行

    使用Perl批量读取文件最后行 面对成百上千个文件,有时我们需要查看它的最后行,单个文件打开将耗费大量时间,而通过Perl提取出最后行,将快速的帮助我们处理繁琐的事务. 特性 整个目录完全遍历,自动提 ...

  10. IIS最大并发连接数 = 队列长度 + IIS最大并发工作线程数

    深入理解IIS的多线程工作机制   首先让我们来看看IIS里面的这2个数字:最大并发连接数,队列长度.先说这2个数字在哪里看. 最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并 ...